发送电子邮件时未触发MessageSending事件

艾伦

发送(或发送)电子邮件时,我需要执行一些代码。我的应用程序正在运行Laravel 5.3。我按照此处说明进行了操作并注册了LogSentMessage事件侦听器。

到目前为止,这是我的代码:

app/Listeners/LogSentMessage.php

<?php

namespace App\Listeners;

use Illuminate\Mail\Events\MessageSending;

class LogSentMessage
{
    public function __construct()
    {
        //
    }

    public function handle(MessageSending $event)
    {
        logger('Hello World');
    }
}

app/Listeners/EventServiceProvider.php

<?php

namespace App\Providers;

use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;

class EventServiceProvider extends ServiceProvider
{
    protected $listen = [
        'Illuminate\Mail\Events\MessageSending' => [
            'App\Listeners\LogSentMessage',
        ],
    ];


    public function boot()
    {
        parent::boot();

        //
    }
}

它可以在两个不同的开发环境中完美运行,侦听器会记录“ Hello World”,但在我的生产环境中则无法运行。是什么原因造成的?我正在使用数据库队列驱动程序将电子邮件发送存储为作业,但是按照以下说明这应该不是问题:

Laravel在发送邮件消息之前会触发一个事件。请记住,此事件在发送邮件时触发,而不是在排队时触发您可以在EventServiceProvider中注册此事件的事件侦听器:

另外,我的生产环境是通过Laravel Forge创建的Homestead图像

队列工作者将应用程序存储在内存中。因此,如果您是第一次启动队列侦听添加了记录器,请确保运行php artisan queue:restart以刷新作业:

请记住,队列工作器是长期存在的进程,并将启动的应用程序状态存储在内存中。因此,启动它们后他们将不会注意到代码库中的更改。因此,在部署过程中,请确保重新启动队列工作器。

来源:运行队列工作器

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章