SendTemplatedEmail 操作を使用して Amazon SES メールを送信するときに配信が失敗するのはなぜですか?

所要時間1分
0

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 通知を受け取るようになります。この通知のエラーメッセージには、レンダリング失敗の原因となったテンプレート変数に関する情報が含まれています。

例えば、以下のテンプレートには、namefavoritecolor の各変数が含まれています。

{
  "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 メールを送信する

コメントはありません

関連するコンテンツ