你好,我是一名初学者,关于Laravel中的事件和监听器,请告诉我如何实现以下目标:
目标:
向用户发送电子邮件,并了解是否已成功发送电子邮件。
我的理解:
Laravel内置了事件Illuminate\Mail\Events\MessageSent
,在电子邮件发送后触发该事件,我需要编写监听器来监听该事件。
我的操作:
发送电子邮件:
Mail::to($receiverAddress)->send(new SendNewUserPassword($content));
这个很好。已成功向用户发送电子邮件。
为了监听messageSent事件,我创建了这个监听器:
<?php
namespace App\Listeners;
use Illuminate\Mail\Events\MessageSent;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
class LogSentMessage
{
/**
* Create the event listener.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Handle the event.
*
* @param MessageSent $event
* @return void
*/
public function handle(MessageSent $event)
{
return $event->message;
}
}
注册事件:
protected $listen = [
'App\Events\Event' => [
'App\Listeners\EventListener',
],
'Illuminate\Mail\Events\MessageSent' => [
'App\Listeners\LogSentMessage',
],
];
在控制器中:
event(new MessageSent())
请指导我如何从控制器中返回Listener处理的消息。如果我上述的方法是错误的,请告诉我如何实现它。我正在为一个API使用它,所以如果发送邮件成功/失败,我想知道。
withSwiftMessage
变成了withSymfonyMessage
- 更多详情请参见此处。 - Cameron Wilby