Отправка электронной почты через AWS SES с использованием класса Laravel Mail - PullRequest
0 голосов
/ 08 января 2019

Я пытаюсь отправить электронное письмо, используя сервис AWS SES и класс Laravel Mail (Illuminate\Support\Facades\Mail).

Я хотел бы установить на ConfigurationSetName, чтобы иметь возможность получать уведомления через AWS SNS.

В настоящее время я использую класс Laravel Mail с использованием SES, и он работает, но не уведомления.

Есть ли способ сделать это? Или я всегда должен использовать SesClient для назначения ConfigurationSetName?

1 Ответ

0 голосов
/ 08 января 2019

Согласно документации AWS , вы можете указать заголовок X-SES-CONFIGURATION-SET в электронном письме.

С точки зрения Laravel, самый простой способ - указать заголовки для отправки прямо из вашего Mailable:

public function build()
{
    $this->markdown('emails.creditcard.added');

    $this->withSwiftMessage(function ($message) {
        $message->getHeaders()
                ->addTextHeader('X-SES-CONFIGURATION-SET', '####');
    });
}

Вы также можете сделать это с помощью Mail Facade, так как он имеет базовый экземпляр Swift_Message. Например:

Mail::send('emails.creditcard.added', [], function ($message) use($user) {
    $message->to($user->email)
        ->getSwiftMessage()
        ->getHeaders()
        ->addTextHeader('X-SES-CONFIGURATION-SET', '####');
});

Если вы хотите добавить этот заголовок ко всем электронным письмам, вы также можете прослушать событие Illuminate\Mail\Events\MessageSending и добавить оттуда заголовки.

public function handle(MessageSending $event)
{
    $headers = $event->message->getHeaders();
    $headers->addTextHeader('X-SES-CONFIGURATION-SET', '####');
}

Я также проверил, что это работает.

...