跳至内容

如何对与 Amazon SES SendTemplatedEmail API 相关的电子邮件送达失败问题进行故障排除?

1 分钟阅读
0

我使用 Amazon Simple Email Service (Amazon SES) SendTemplatedEmail API 操作来发送电子邮件。但是,Amazon SES 并未使电子邮件送达。

简短描述

当您使用电子邮件模板时,Amazon SES 会验证您发送的模板数据是否包含模板中所需的变量。如果模板数据包含不合规的变量或缺少变量,Amazon SES 便无法使电子邮件送达。

解决方法

使用 Amazon SNS 设置 Rendering Failure event notifications(渲染失败事件通知)。然后,查看渲染失败事件通知,了解在您使用 SendTemplatedEmail API 操作时,Amazon SES 未使电子邮件送达的原因。

设置渲染失败事件通知后,当送达失败时,您会收到通过电子邮件模板发送的 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 将无法使电子邮件送达。这是因为模板中缺少 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"
    }
}

为避免渲染失败,请遵循以下最佳做法:

  • 验证模板数据中变量名称的大小写是否正确以及模板中的变量名称是否区分大小写。
  • 验证您的模板数据是否包含模板中的所有变量。
  • 您必须利用经过验证的电子邮件地址或域名发送消息,最大消息大小为 10 MB。

相关信息

Using templates to send personalized email with the Amazon SES API(使用模板,通过 Amazon SES API 发送个性化电子邮件)

为什么我通过 Amazon SES 发送的电子邮件没有送达?

Amazon SES delivery problems(Amazon SES 送达问题)