axazara / mailify-laravel
Requires
- php: ^8.1
- illuminate/contracts: ^9.0 || ^10.1
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.22
- insolita/unused-scanner: ^2.4
- nunomaduro/collision: ^6.0
- nunomaduro/larastan: ^2.4
- orchestra/testbench: ^7.22
- phpstan/extension-installer: ^1.3
- phpstan/phpstan-deprecation-rules: ^1.1
- phpstan/phpstan-phpunit: ^1.3
- phpunit/phpunit: ^9.6
- roave/security-advisories: dev-latest
README
这是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
时才会抛出异常。
有用的链接
- 阅读 Mailify 文档 了解 Mailify 的更多信息。
- 阅读 Laravel 文档 了解 Laravel 的更多信息。
- 阅读 Laravel 队列文档 了解 Laravel 队列的更多信息。
- 阅读 Laravel Octane 文档 了解 Laravel Octane 的更多信息。
- 阅读 Mailtrap 文档 了解 Mailtrap 的更多信息。
下一项功能(待办事项)
- [ ] 添加
->attach()
方法以将文件附加到电子邮件 - [ ] 添加
->bcc()
方法以发送电子邮件到 BCC - [ ] 添加
->cc()
方法以发送电子邮件到 CC - [ ] 添加
->from()
方法以设置电子邮件发送者 - [ ] 添加
->delay()
方法以将邮件发送延迟到指定的日期和时间戳
测试
composer test
变更日志
有关最近更改的更多信息,请参阅 变更日志。
安全漏洞
如果您发现有关安全性的错误,请通过 hello@axazara.com 发送电子邮件,而不是使用问题跟踪器。
致谢
许可证
MIT 许可证(MIT)。有关更多信息,请参阅 许可证文件。