Переопределение setGlobalTo почтовой программы Laravel
У меня возникли проблемы с отправкой писем из Laravel в API SendGrid в моей среде разработки.
Дело в том, что у меня есть глобальный, который нужно установить на моем mail.php конфигурационный файл, чтобы все отправляемые электронные письма отправлялись по этому адресу.
Но функция setGlobalTo() класса Mailer фактически устанавливает одно и то же электронное письмо в "КОМУ", "Копия" и "Скрытая копия".
SendGrid на своей конечной точке не принимает дублированные электронные письма, поэтому он выдает ошибку
Это будет исправлено, если я прокомментируйте 2 строки, которые устанавливают CC и BCC, например:
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 перед отправкой моих электронных писем в среде разработки?
Спасибо вам!
1 answers
Я решил это, прослушав событие Illuminate\Mail\Events\MessageSending
(которое возникает непосредственно перед фактической отправкой почты) и отключив CC и BCC, если есть набор адресов globalTo
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([]);
}
}
}