我正在尝试使用AWS SES服务和Laravel Mail类(Illuminate\Support\Facades\Mail
)发送电子邮件。
我想设置为ConfigurationSetName
以便能够通过AWS SNS接收通知。
此刻,我正在通过SES使用Laravel Mail类,它正在工作,但没有通知。
有没有办法做到这一点?还是我必须始终使用SesClient来分配ConfigurationSetName
?
答案 0 :(得分:1)
根据AWS Documentation,您可以在电子邮件上指定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', '####');
}
我也验证了它的作用。