【问题标题】:How to send emails in Laravel according to app environment?如何根据应用环境在 Laravel 中发送电子邮件?
【发布时间】:2018-01-23 13:05:46
【问题描述】:

我有几个发送电子邮件的控制器,它们都使用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,但似乎没有什么不同。

我做错了什么?

【问题讨论】:

    标签: php laravel email events swiftmailer


    【解决方案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

    【讨论】:

    • 谢谢,但 dd 只是示例
    猜你喜欢
    • 2021-03-21
    • 2018-12-07
    • 1970-01-01
    • 2019-09-25
    • 1970-01-01
    • 2013-10-04
    • 2023-04-02
    • 2011-09-01
    • 2019-07-01
    相关资源
    最近更新 更多