【发布时间】:2017-02-05 03:34:37
【问题描述】:
我使用的是 Laravel 4.2
user3158900 给出的答案是针对 Laravel 5.* 任何人都可以帮助我使用 4.2 版吗?
我想用我自己的函数覆盖 sendSwiftMessage() 受保护的函数。
sendSwiftMessage() 位于
“供应商/laravel/framework/src/Illuminate/Mail/Mailer.php”
我创建了一个
Lib/Mailer/CustomMailer.php
并将文件夹 Lib 设置为在 composer (PSR4) 中自动加载。 我现在可以通过以下方式在我的控制器中调用/加载我的函数:
新的 Lib\Mailer\CustomMailer;
这是我的文件的样子:
<?php namespace Lib\Mailer;
class CustomMailer extends \Illuminate\Mail\Mailer {
/**
* Send a Swift Message instance.
*
* @param \Swift_Message $message
* @return void
*/
protected function sendSwiftMessage($message)
{
if (strpos($message->toString(), 'noemail@noemail.com') == true) {
Log::info('Not sending mail to noemail@noemail.com');
}
else
{
if ($this->events)
{
$this->events->fire('mailer.sending', array($message));
}
if ( ! $this->pretending)
{
$this->swift->send($message, $this->failedRecipients);
}
elseif (isset($this->logger))
{
$this->logMessage($message);
}
}
}
}
但是,当我在控制器中使用 Swiftmailer 通过执行示例发送电子邮件时,不会使用此 sendSwiftMessage() 函数:
Mail::send(xxxx);
我的问题:如果我不想修改当前使用 Mail 的所有控制器,如何让 Swiftmailer/Laravel 在发送消息时使用我的自定义 sendSwiftMessage() 函数:发送()代码
【问题讨论】:
-
user3158900 的答案是针对 Laravel 5.* 任何人都可以帮助我使用 4.2 版吗?