如何找出 Amazon SES 使用 SendTemplatedEmail 操作的电子邮件未能传输的原因?

上次更新时间:2019-04-03

我使用 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 不会传输电子邮件,因为 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 'favoritenumber' is not present in the rendering data.",
        "templateName": "ExampleTemplate"
    }
}

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

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

这篇文章对您有帮助吗?

您觉得我们哪些地方需要改进?


需要更多帮助?