困ったこと

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"
}