axazara/mailify-laravel

此包已被弃用且不再维护。作者建议使用 mailzeet/mailzeet-laravel 包。

这是Mailify(Axa Zara邮件服务)API的官方Laravel客户端库,允许您发送邮件。

v1.3 2023-07-30 02:00 UTC

README

Pipeline Status Coverage Latest Version on Packagist Total Downloads License: MIT

这是Mailify服务API的官方Laravel客户端库,允许您发送邮件。

Mailify::send('welcome_template')->to('yoyo.elimah@gmail.com')->now();

安装

您可以通过composer安装此包

composer require axazara/mailify-laravel

php artisan mailify:install

您必须使用以下命令发布配置文件

php artisan mailify:install

这是已发布的配置文件内容

return [
    'api_key'  => env('MAILIFY_API_KEY', 'default'),
    'reply_to' => env('MAILIFY_REPLY_TO'),
    'priority' => env('MAILIFY_PRIORITY', 0),
    'queue'    => env('MAILIFY_QUEUE', 'default'),
    'env'      => env('MAILIFY_ENV', 'live'),
    'api_url'  => env('MAILIFY_API_URL'),
];

设置

要使用Mailify,您必须在配置文件或.env文件中设置您的API密钥。

MAILIFY_API_KEY=YOUR_API_KEY // Your Mailify API key

重要

  • 将您的API密钥作为环境变量保存在您的.env文件中。不要将其硬编码在您的代码中。
  • 您不得与任何人分享您的API密钥。
  • 您不得将API密钥提交到版本控制。

模板

要使用Mailify,您必须在Mailify配置文件中定义您的模板。Mailify配置文件有一个templates键,它是一个模板数组。此数组用于存储模板。键是模板名称,值是模板ID。示例:

'templates' => [    
    'template_name' => 'template_id',
    'welcome_template' => 'welcome_template_id',
    'reset_password_template' => 'reset_password_template_id',
],

您可以在Mailify::send()方法中使用模板名称。

示例

 Mailify::send('template_name')->to('you@smile.com')->now();

重要

  • 模板ID必须是从您的Mailify仪表板的有效模板ID。

用法

要发送电子邮件,请使用以下语法

Mailify::send('template_name')->to('john@getmailify.com')->now();
  • send() 接受Mailify模板名称
  • to() 接受收件人电子邮件地址
  • now() 如果您想立即发送电子邮件

您也可以通过以下方法传递其他参数

注意:所有参数必须在now()later()方法之前传递。

- 模板参数:(可选)

这是一个参数数组,将传递给模板。这些参数将在模板中作为变量可用。

 ->with([
    'name' => 'John Doe',
    'order_id' => 1234,
])
- 回复地址:(可选)

回复地址是在收件人回复电子邮件时使用的地址。如果没有指定,则回复地址将是Mailify仪表板中指定的地址。您也可以在配置文件中设置默认回复地址或在.env文件中使用MAILIFY_REPLY_TO环境变量。

 ->replyTo('team@exemple.com')
- 优先级:(可选)

电子邮件的优先级。Mailify支持2个优先级级别:0(默认)和1(高);您也可以在配置文件中设置默认优先级或在.env文件中使用MAILIFY_PRIORITY环境变量。默认优先级是0

 ->priority(1)

使用完整参数的示例用法

Mailify::send('template_name')
    ->to('john@example.com')
    ->with([
        'name' => 'John Doe',
        'order_id' => 1234,
    ])
    ->replyTo('help@company.com')
    ->priority(1)
    ->now();

稍后发送电子邮件

您也可以选择使用later()afterResponse()方法排队发送电子邮件。

  • later()方法通过Mailify的队列系统使用Laravel队列系统通过default队列发送电子邮件。如果您不想在返回用户响应之前等待电子邮件发送,或者您想在后台发送电子邮件,这将非常有用。

    注意

    • 您必须有一个运行中的队列工作者才能发送电子邮件。您可以在Laravel文档中了解更多关于队列工作者的信息:Laravel文档
    • 如果您想使用自定义队列,您需要将MAILIFY_QUEUE环境变量设置为要使用的队列的名称。请确保有一个队列工作者在处理队列消息,否则它们将不会被发送。
  • afterResponse() 方法用于在将响应发送到浏览器后发送电子邮件。此方法不需要配置队列驱动程序。

    注意:此方法仅在您的 web 服务器使用 FastCGI 或与 Laravel Octane(Swoole、RoadRunner)一起运行时才有效。

本地开发

如果您在本地开发环境中使用 Mailify,您不想发送真实的电子邮件。相反,您可以使用 Mailify 与 Mailtrap SMTP 集成在浏览器中查看电子邮件,而不是发送它们。

为了避免在本地开发或测试环境中出现错误,您可以在 .env 文件中将 MAILIFY_ENV 环境变量设置为 test,这将阻止包向 Mailify API 发送电子邮件。⚠️在部署到生产环境时,请务必将 MAILIFY_ENV 环境变量设置为 live

MAILIFY_ENV=test

错误 & 异常

如果在发送电子邮件时发生错误,将抛出异常。您可以捕获异常并相应地处理它。

try {
    Mailify::send('template_name')->to('test@test.com')->now();
} catch (Exception $exception) {
    // Handle the exception
}

可能的异常有

  • Axazara\Mailify\Exceptions\ApiKeyIsMissing
  • Axazara\Mailify\Exceptions\PriorityIsInvalid
  • Axazara\Mailify\Exceptions\ReplyToIsInvalid
  • Axazara\Mailify\Exceptions\SendingError
  • Axazara\Mailify\Exceptions\ToIsInvalid

所有错误都记录在 laravel.log 文件中,您可以在 storage/logs 目录中找到日志文件。只有在将 APP_DEBUG 环境变量设置为 true 时才会抛出异常。

有用的链接

下一项功能(待办事项)

  • [ ] 添加 ->attach() 方法以将文件附加到电子邮件
  • [ ] 添加 ->bcc() 方法以发送电子邮件到 BCC
  • [ ] 添加 ->cc() 方法以发送电子邮件到 CC
  • [ ] 添加 ->from() 方法以设置电子邮件发送者
  • [ ] 添加 ->delay() 方法以将邮件发送延迟到指定的日期和时间戳

测试

composer test

变更日志

有关最近更改的更多信息,请参阅 变更日志

安全漏洞

如果您发现有关安全性的错误,请通过 hello@axazara.com 发送电子邮件,而不是使用问题跟踪器。

致谢

许可证

MIT 许可证(MIT)。有关更多信息,请参阅 许可证文件