Переопределение 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 перед отправкой моих электронных писем в среде разработки?

Спасибо вам!

Author: Carlos Fdev, 2017-03-17

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([]);
        }
    }
}
 3
Author: Carlos Fdev, 2017-03-21 08:35:24