覆盖 Laravel 邮件程序的 setGlobalTo
Override setGlobalTo of Laravel Mailer
我在开发环境中将邮件从 Laravel 发送到 SendGrid API 时遇到问题。
问题是我在我的 mail.php 配置文件中设置了全局 TO,以便所有发送的电子邮件都转到该地址。
但是 Mailer class 的 setGlobalTo() 函数实际上将相同的电子邮件设置为 TO、CC 和 BCC。
他端点上的 SendGrid 不接受重复的电子邮件,因此会引发错误
如果我评论设置 CC 和 BCC 的 2 行,它会得到修复:
protected function setGlobalTo($message){
$message->to($this->to['address'], $this->to['name'], true);
//$message->cc($this->to['address'], $this->to['name'], true);
//$message->bcc($this->to['address'], $this->to['name'], true);
}
但它是一个供应商文件,所以,问题是...
在开发环境中发送电子邮件之前,如何轻松覆盖该方法或取消设置 cc 和 bcc?
谢谢!
我解决了它侦听 Illuminate\Mail\Events\MessageSending
事件(在实际发送邮件之前引发)并在设置了 globalTo 地址时取消设置 CC 和 BCC
namespace App\Listeners;
use Illuminate\Mail\Events\MessageSending;
use Illuminate\Support\Facades\Config;
class MessageSendingListener {
public function handle(MessageSending $swiftMessage) {
$globalTo = Config::get('mail.to.address');
if (isSet($globalTo)) {
$swiftMessage->message->setBcc([]);
$swiftMessage->message->setCc([]);
}
}
}
我在开发环境中将邮件从 Laravel 发送到 SendGrid API 时遇到问题。
问题是我在我的 mail.php 配置文件中设置了全局 TO,以便所有发送的电子邮件都转到该地址。
但是 Mailer class 的 setGlobalTo() 函数实际上将相同的电子邮件设置为 TO、CC 和 BCC。
他端点上的 SendGrid 不接受重复的电子邮件,因此会引发错误
如果我评论设置 CC 和 BCC 的 2 行,它会得到修复:
protected function setGlobalTo($message){
$message->to($this->to['address'], $this->to['name'], true);
//$message->cc($this->to['address'], $this->to['name'], true);
//$message->bcc($this->to['address'], $this->to['name'], true);
}
但它是一个供应商文件,所以,问题是...
在开发环境中发送电子邮件之前,如何轻松覆盖该方法或取消设置 cc 和 bcc?
谢谢!
我解决了它侦听 Illuminate\Mail\Events\MessageSending
事件(在实际发送邮件之前引发)并在设置了 globalTo 地址时取消设置 CC 和 BCC
namespace App\Listeners;
use Illuminate\Mail\Events\MessageSending;
use Illuminate\Support\Facades\Config;
class MessageSendingListener {
public function handle(MessageSending $swiftMessage) {
$globalTo = Config::get('mail.to.address');
if (isSet($globalTo)) {
$swiftMessage->message->setBcc([]);
$swiftMessage->message->setCc([]);
}
}
}