Don*_*nic 5 php email laravel laravel-5.2
我正在使用Laravel 5.2应用程序。在开发和暂存环境中,我想使用docs中描述的“通用到”邮件配置选项。开发环境的通用性可确保所有电子邮件都发送至该地址,而不发送给真实的客户/客户/任何人。
我无法弄清楚如何在生产中以不同的方式指定此名称。在生产中应该没有通用的-电子邮件应该发送到真实地址。
使用不同env()值的标准方法似乎不起作用。例如:
config / mail.php:
'to' => [
'address' => env('UNIVERSAL_TO', false)
],
Run Code Online (Sandbox Code Playgroud)
开发.env:
UNIVERSAL_TO=my-testing-address@somewhere.com
Run Code Online (Sandbox Code Playgroud)
这可以正常工作-所有电子邮件都UNIVERSAL_TO按预期发送到指定的电子邮件。但是,如果我将其更改为生产中的需求,例如:
生产.env
UNIVERSAL_TO=
Run Code Online (Sandbox Code Playgroud)
(或='',或=false,或者只是完全省略了此内容),则发送任何邮件均失败,并带有(在中storage/laravel.log):
local.ERROR:消息为“给定[]的邮箱中的地址不符合RFC 2822,3.6.2”的异常'Swift_RfcComplianceException'。在路径/到/供应商/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/MailboxHeader.php:348中
config/mail.php 只是返回一个数组,所以我想我可以改为将其设置为变量,然后根据环境将“ to”附加到它,如下所示:
$return = [ ... normal mail config array ... ];
if (!\App::environment('production')) {
$return['to'] => [
'address' => 'my-testing-address@somewhere.com'
];
}
return $return;
Run Code Online (Sandbox Code Playgroud)
但这似乎有点...骇人听闻。有没有更好的办法?
我认为这应该工作- 除非设置了config('mail.to'),null否则它会保留UNIVERSAL_TO。
'to' => env('UNIVERSAL_TO', false) ? [
'address' => env('UNIVERSAL_TO'),
] : null,
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
938 次 |
| 最近记录: |