使用 Laravel Mail class 通过 AWS SES 发送电子邮件
Send email via AWS SES using Laravel Mail class
我正在尝试使用 AWS SES 服务和 Laravel 邮件 class (Illuminate\Support\Facades\Mail
) 发送电子邮件。
我想设置为 ConfigurationSetName
以便能够通过 AWS SNS 接收通知。
目前,我正在通过 SES 使用 Laravel 邮件 class,它可以正常工作,但没有通知。
有什么办法吗?或者我是否必须始终使用 SesClient 来分配 ConfigurationSetName
?
根据AWS Documentation,可以在邮件中指定X-SES-CONFIGURATION-SET
header
从 Laravel 的角度来看,最简单的方法是指定要直接从 Mailable 发送的 header:
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', '####');
});
如果您想将此 header 添加到所有电子邮件,您还可以收听 Illuminate\Mail\Events\MessageSending
事件并从那里添加 header。
public function handle(MessageSending $event)
{
$headers = $event->message->getHeaders();
$headers->addTextHeader('X-SES-CONFIGURATION-SET', '####');
}
我也验证了它有效。
只想补充@Mozammil 的回答。
如果您想添加多个 headers:
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');
});
我正在尝试使用 AWS SES 服务和 Laravel 邮件 class (Illuminate\Support\Facades\Mail
) 发送电子邮件。
我想设置为 ConfigurationSetName
以便能够通过 AWS SNS 接收通知。
目前,我正在通过 SES 使用 Laravel 邮件 class,它可以正常工作,但没有通知。
有什么办法吗?或者我是否必须始终使用 SesClient 来分配 ConfigurationSetName
?
根据AWS Documentation,可以在邮件中指定X-SES-CONFIGURATION-SET
header
从 Laravel 的角度来看,最简单的方法是指定要直接从 Mailable 发送的 header:
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', '####');
});
如果您想将此 header 添加到所有电子邮件,您还可以收听 Illuminate\Mail\Events\MessageSending
事件并从那里添加 header。
public function handle(MessageSending $event)
{
$headers = $event->message->getHeaders();
$headers->addTextHeader('X-SES-CONFIGURATION-SET', '####');
}
我也验证了它有效。
只想补充@Mozammil 的回答。
如果您想添加多个 headers:
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');
});