Amazon Simple Email Service (Amazon SES) アカウントからメッセージを送信するために SendTemplatedEmail 操作を使用しているのですが、Amazon SES が一部の E メールを配信しません。
解決方法
E メールテンプレートを使用するときは、送信されるテンプレートデータを Amazon SES が検証して、テンプレート内の必要な変数が含まれていることを確認します。テンプレートデータに非準拠の変数が含まれている、または変数が欠落している場合、Amazon SES は E メールを配信できません。これは、レンダリング失敗と呼ばれます。
Amazon Simple Notification Service (Amazon SNS) を使用して、レンダリング失敗イベント通知をセットアップします。レンダリング失敗イベント通知を確認して、SendTemplatedEmail 操作を使用するときに Amazon SES が E メールを配信しない理由を調べます。
レンダリング失敗イベント通知を設定すると、テンプレートを使用する 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}}."
}
}
以下のテンプレートデータを送信すると、Amazon SES は E メールを配信できません。favoritecolor 変数がテンプレートから欠落しているためです。
重要: テンプレートに存在しない余分な変数 (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"
}
}
レンダリング失敗を回避するには、これらのガイドラインに従ってください。
- テンプレートデータ内にある変数名の大文字と小文字の区別をチェックします。テンプレートの変数名は大文字と小文字を区別します。
- テンプレートデータにテンプレートの変数がすべて含まれていることを確認します。
関連情報
テンプレートを使用して、Amazon SES API でパーソナライズされた E メールを送信する