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

1 分钟阅读
0

我正在使用 SendTemplatedEmail 操作从我的 Amazon Simple Email Service(Amazon SES)账户发送消息。但是,Amazon SES 不发送某些电子邮件。

解决方法

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

使用 Amazon Simple Notification Service(Amazon SNS)设置渲染失败事件通知。查看渲染失败事件通知,了解在您使用 SendTemplatedEmail 操作时,Amazon SES 不发送电子邮件的原因。

设置渲染失败事件通知后,模板化电子邮件传输失败时您会收到 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"
    }
}

要避免渲染失败,请遵循以下指南:

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

相关信息

使用模板发送带 Amazon SES API 的个性化电子邮件

AWS 官方
AWS 官方已更新 1 年前