簡體   English   中英

使用 Laravel Mail 類通過 AWS SES 發送電子郵件

[英]Send email via AWS SES using Laravel Mail class

我正在嘗試使用 AWS SES 服務和 Laravel 郵件類 ( Illuminate\\Support\\Facades\\Mail ) 發送電子郵件。

我想設置為ConfigurationSetName以便能夠通過 AWS SNS 接收通知。

目前,我正在使用 SES 的 Laravel Mail 類,它正在工作,但沒有通知。

有沒有辦法做到這一點? 還是我必須始終使用 SesClient 來分配ConfigurationSetName

根據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', '####');
}

我還驗證了它的工作原理。

只想補充@Mozammil 的回答。

如果您想添加多個標題:

return $this->view('mail-template')
    ->withSwiftMessage(function ($message) {
        $headers = $message->getHeaders();
        $headers->addTextHeader('X-SES-CONFIGURATION-SET', 'my-configuration-set');
        $headers->addTextHeader('ANOTHER-HEADER', 'header-value');
    });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM