如何根据app环境在Laravel发送邮件?
How to send emails in Laravel according to app environment?
我有几个发送电子邮件的控制器,它们都使用 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,但似乎没有什么不同。
我做错了什么?
您应该将通用 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
我有几个发送电子邮件的控制器,它们都使用 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,但似乎没有什么不同。
我做错了什么?
您应该将通用 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