当我使用 SendTemplatedEmail 操作发送 Amazon SES 电子邮件时,为什么电子邮件无法传输?

上次更新日期:2021 年 3 月 25 日

我使用 SendTemplatedEmail 操作从我的 Amazon Simple Email Service (Amazon SES) 账户发送消息。但是,某些电子邮件从未传输。如何找出故障原因?

解决方法

当您使用电子邮件模板时,Amazon SES 会验证您发送的模板数据是否包括模板中所需的变量。如果模板数据包含不合规变量或缺少变量,则 Amazon SES 无法传输电子邮件。这称为渲染故障。

要找出使用 SendTemplatedEmail 操作未能传输电子邮件的原因,请设置使用 Amazon Simple Notification Service (Amazon SNS) 渲染故障事件通知

设置渲染故障事件通知后,您将在模板化电子邮件传输失败时,收到 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 将无法传输电子邮件,因为模板中缺失 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"
    }
}

请遵循以下指导原则以避免渲染故障:

  • 检查您的模板数据中的变量名称的大写。模板中的变量名称区分大小写。
  • 验证您的模板数据包含模板中的所有变量。

这篇文章对您有帮助吗?


您是否需要账单或技术支持?