困ったこと
SESでメール送信のテストをしようと、以下のコマンドでメールを送信しようとしました。
aws --profile ars --region ap-northeast-1 ses send-email --from mail@ars-grading-mail.com --to xxxxx@gmail.com --message "Subject={Data=This is a test mail,Charset=utf8},Body={Text={Data=This is a test mail.,Charset=utf8},Html={Data=This is a test mail,Charset=utf8}}"
そうすると、以下のエラーでメール送信できないのです。
An error occurred (MessageRejected) when calling the SendEmail operation: Email address is not verified. The following identities failed the check in region AP-NORTHEAST-1: xxxxx@gmail.com
原因
上のエラーメッセージは、自分のメールアドレス「xxxxx@gmail.com」が検証されていないという内容です。
AWS SESはデフォルトで「サンドボックス」モードで動作します。このモードでは送信先を事前に検証しておく必要があります。これは、Amazonがスパムや不正利用を防止するためのポリシーであるからということらしいです。
対応
じゃあ、どれすればいいかというと。
以下の手順で送信先となる自分のメールアドレスを登録します。
IDの作成を選択。
Eメールアドレスを選択して、送信先のアドレスを入力します。
変更後
以下を実施します。
aws --profile ars --region ap-northeast-1 ses send-email --from mail@ars-grading-mail.com --to xxxxx@gmail.com --message "Subject={Data=This is a test mail,Charset=utf8},Body={Text={Data=This is a test mail.,Charset=utf8},Html={Data=This is a test mail,Charset=utf8}}"
そうすると、以下のようにjsonが返却されました。これで送信できてまして、gmailを参照するとメールが届いていることを確認できます。
{
"MessageId": "0106018cb0836439-94807cd8-e8ab-4bb2-9323-89becb120517-000000"
}