我在开发环境中从Laravel向SendGrid API发送邮件时遇到问题。
问题是我在mail.php配置文件中设置了全局TO,以便发送的所有电子邮件都转到该地址。
但是Mailer类的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?
谢谢!
答案 0 :(得分:3)
我解决了它正在侦听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([]);
}
}
}