我需要在发送(或正在发送)电子邮件时执行一些代码。我的应用程序正在运行 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');
}
}
Run Code Online (Sandbox Code Playgroud)
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();
//
}
}
Run Code Online (Sandbox Code Playgroud)
它在两个不同的开发环境中完美工作,侦听器记录“Hello World”,但在我的生产环境中不起作用。可能是什么原因造成的?我正在使用数据库队列驱动程序将电子邮件发送存储为作业,但据此,这不应该成为问题:
Laravel 在发送邮件消息之前触发一个事件。请记住,此事件在发送邮件时触发,而不是在邮件排队时触发。您可以在 EventServiceProvider 中为此事件注册一个事件监听器:
另外,我的生产环境是通过Laravel Forge创建的 Homestead 镜像
| 归档时间: |
|
| 查看次数: |
1680 次 |
| 最近记录: |