SendTemplatedEmail オペレーションを使用して Amazon SES メールを送信すると、送信に失敗するのはなぜですか?
最終更新日: 2021 年 3 月 25 日
SendTemplatedEmail オペレーションを使用して Amazon Simple Email Service (Amazon SES) アカウントからメッセージを送信しようとしています。しかし、一部の E メールが送信されません。原因を突き止めるにはどうすればよいですか。
解決方法
E メールテンプレートを使用すると、Amazon SES は、テンプレートに必要な変数が送信したテンプレートデータに含まれていることを検証します。テンプレートのデータに非準拠の変数が含まれているか、変数の記述漏れがあると、Amazon SES は E メールを送信できません。これは、レンダリングの失敗と呼ばれます。
SendTemplatedEmail オペレーションを使用したときに E メールを送信できない原因を突き止めるには、Amazon Simple Notification Service (Amazon SNS) を使用してレンダリング失敗イベント通知をセットアップします。
レンダリング失敗イベント通知を設定すると、今後、テンプレート E メールの送信が失敗したときに Amazon SNS 通知を受け取ります。この通知のエラーメッセージに、テンプレート変数のどの情報がレンダリングの失敗につながったかを示す情報が含まれています。
例えば、このテンプレートには変数の name と favoritecolor が含まれています。
{
"Template": {
"TemplateName": "ExampleTemplate",
"SubjectPart": "Hello, {{name}}!",
"HtmlPart": "<h1>Hello {{name}},</h1><p>Your favorite color is {{favoritecolor}}.</p>",
"TextPart": "Dear {{name}},\r\nYour favorite color is {{favoritecolor}}."
}
}
次のテンプレートデータを送信すると、テンプレートの favoritenumber 変数の記入が漏れているため、Amazon SES は E メールを送信できません。
重要: テンプレートに存在しない余分な変数を含めた場合 (favoritenumber など)、エラーは発生しません。ただし、テンプレートに含まれるすべての変数は、テンプレートデータ内の大文字と小文字の区別に正確に一致している必要があります。
"TemplateData": "{ \"name\":\"Jane\", \"favoritenumber\": \"10\" }"
レンダリング失敗イベント通知を使用すると、次のような失敗通知を受け取ります。
{
"eventType": "Rendering Failure",
"mail": {
"timestamp": "2019-09-09T04:38:19.788Z",
"source": "sender@example.com",
"sourceArn": "arn:aws:ses:us-west-2:1234567890123:identity/sender@example.com",
"sendingAccountId": "1234567890123",
"messageId": "01010161a734a0eb-a706827a-3bda-490f-8eaa-63cf4b00d10c-000000",
"destination": [
"receiver@example.com"
],
"headersTruncated": false,
"tags": {
"ses:configuration-set": [
"RenderFailure"
]
}
},
"failure": {
"errorMessage": "Attribute 'favoritecolor' is not present in the rendering data.",
"templateName": "ExampleTemplate"
}
}
レンダリング失敗を回避するには、次のガイドラインに従ってください。
- テンプレートデータの変数名の大文字と小文字を確認してください。テンプレートの変数名は大文字と小文字を区別します。
- テンプレートデータにテンプレートの変数がすべて含まれていることを確認します。