Yas*_*che 5 php laravel laravel-5
我使用的是 Laravel 5.7,当使用 Mail 接口发送电子邮件时,会触发Mail\Events\MessageSending
和两个事件Mail\Events\MessageSent
,因此我的目标是捕获 MessageSending 事件并获取用于发送电子邮件的可邮寄类(示例mail\Ordershipped
)并停止它。
<?php
namespace App\Listeners;
use Illuminate\Mail\Events\MessageSending;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
class LogSendingMessage
{
/**
* Create the event listener.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Handle the event.
*
* @param MessageSending $event
* @return void
*/
public function handle(MessageSending $event)
{
//here i want to check what mailable class used and stop it.
if ($mailable == 'Ordershipped')
return false;
// if another mailable class (example: userVerification)
else
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
此时,事件不知道可邮寄类型是什么,因为 HTML 已经从刀片构建。
但是,您可以将值附加到可邮寄中的基础 swift 邮件类。
在您的App\Mail
文件夹中创建一个名为Mailable.php
. 现在,这是您的新可邮寄类,您的所有可邮寄类都将扩展自该类。
namespace App\Mail;
use Illuminate\Contracts\Mail\Mailer as MailerContract;
use Illuminate\Mail\Mailable as BaseMailable; // Extend off laravel mailable
abstract class Mailable extends BaseMailable
{
public function send(MailerContract $mailer)
{
//Initializes properties on the Swift Message object
$this->withSwiftMessage(function ($message) {
$message->mailable = get_class($this);
});
parent::send($mailer);
}
}
Run Code Online (Sandbox Code Playgroud)
将此类用于所有邮件,如下所示:
use App\Mail\Mailable; // This is your new mailable parent class
class UserConfirmEmail extends Mailable
{
public function build()
{
// Build email
}
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以从 swift_mail 对象获取可邮寄的名称,该对象是$event
变量的消息属性,例如$event->message
。
// App\Listeners\LogMessageSending.php
public function handle(MessageSending $event)
{
//here i want to check what mailable class used and stop it.
if ($event->message->mailable == 'Ordershipped') {
return false;
}
// if another mailable class (example: userVerification)
else {
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2366 次 |
最近记录: |