我有几个发送电子邮件的控制器,所有控制器都使用Illuminate\Mail
,它提供了一个名为Illuminate\Mail\Events\MessageSending
的事件,在发送邮件时触发。
我想在此时截取消息并更改$to
变量,用开发者电子邮件替换其中的任何值,具体取决于\App::environment()
值。
我在EventServiceProvider
中添加了一个监听器,接收MessageSending
的实例,该实例将\Swift_Message $event
作为参数传递给侦听器的handle()
方法。
然而,我被困在这里。这就是我的所作所为:
// dd()'s are removed in final code, they are here just as examples
// array with real emails
dd($event->message->getTo());
if (!\App::environment('production')) {
$event->message->SetTo(['developer@test.com']);
}
// developer@test.com
dd($event->message->getTo());
return $event;
它改变了$ event,但它似乎没有什么区别。
我做错了什么?
答案 0 :(得分:1)
您应该将通用to
放入.env
个文件中,而不是在事件中尝试覆盖它。
所以,把它放到.env
:
MAIL_TO_EMAIL=test@test.com
MAIL_TO_NAME=test
然后在config/mail.php
:
'to' => [
'address' => env('MAIL_TO_EMAIL'),
'name' => env('MAIL_TO_NAME')
],
https://laravel.com/docs/5.5/mail#mail-and-local-development