如何在发邮件时检查每个邮件? [ 2.0 版本 ]
我想在发邮件前对每个邮件进行检查,应该如何操作?我查了api,有beforeSend() 方法和EVENT_BEFORE_SEND 事件,但是应该怎么用呢?我在main-local.php里企图向下面一样重写beforeSend方法,但是好像不行:
'mailer' => [
'class' => 'yii\swiftmailer\Mailer',
'viewPath' => '@common/mail',
'useFileTransport' => false,
**'beforeSend'=>function(){return true;}**
'transport' => [
'class' => 'Swift_SmtpTransport',
'host' => 'Host.COM',
'username' => 'test',
'password' => 'test',
'port' => 25,
],
'messageConfig'=> [
'charset' => 'UTF-8',
],
],
zq 补充于 2022-01-04 14:14
我在main-local.php里新增了一个类:
class mailer extends yii\swiftmailer\Mailer
{
public function beforeSend($message)
{
yii::info('sddws12asc');
yii::info(print_r($message->to));
yii::info($message->to);
$message->to=['qing@qq.com' => null];
$message->Cc=[ 'qing@qq.com' => null];
return parent::beforeSend($message); // TODO: Change the autogenerated stub
}
}
然后:
'mailer' => [
'class' => 'mailer',
最佳答案
-
没试过,但是感觉可以结合
https://www.yiichina.com/doc/guide/2.0/structure-extensions#bootstrapping-classes订阅全局事件
Event::on(BaseMailer::className(), BaseMailer::EVENT_BEFORE_SEND, function ($event) { // 不符合条件 $event->isValid = false; });
// 涉及的源码 yii\mail\BaseMailer public function beforeSend($message) { $event = new MailEvent(['message' => $message]); $this->trigger(self::EVENT_BEFORE_SEND, $event); return $event->isValid; } public function send($message) { if (!$this->beforeSend($message)) { return false; } }
其他 0 个回答
没有找到数据。
zq
注册时间:2017-02-09
最后登录:2024-05-04
在线时长:14小时6分
最后登录:2024-05-04
在线时长:14小时6分
- 粉丝3
- 金钱340
- 威望10
- 积分580