[英]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.