使用模板通过 Amazon SES API 发送个性化电子邮件 - Amazon Simple Email Service

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

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

您可以使用 CreateTemplateAPI 操作来创建电子邮件模板。这些模板包含一个主题行以及电子邮件正文的文本和 HTML 部分。主题和正文部分还可能包含针对每个收件人进行个性化设置的唯一值。

使用这些特征时存在一些限制和其它注意事项:

  • 每个模板中最多可以创建 20,000 个电子邮件模板 AWS 区域。

  • 每个模板的大小最多为 500 KB (包括文本和 HTML 部分)。

  • 您可以在每个模板中包含任意数量的替代变量。

  • 在对 SendBulkTemplatedEmail 操作的每次调用中,您可以将电子邮件发送到最多 50 个目标。目标包含一个收件人列表,包括抄送和密件抄送收件人。您可以在单次 API 调用中联系的目标数可能受您的账户的最大发送速率限制。有关更多信息,请参阅 管理您的 Amazon SES 发送限制

本节包含创建电子邮件模板和发送个性化电子邮件的过程。

注意

本节中的过程假定您已安装和配置 AWS CLI。有关安装和配置的更多信息 AWS CLI,请参阅《AWS Command Line Interface 用户指南》

第 1 部分:设置呈现故障事件通知

如果您发送一封包含无效的个性化内容的电子邮件,那么 Amazon SES 可能接受该邮件,但无法传递它。因此,如果您计划发送个性化电子邮件,则应将 Amazon SES 配置为通过 Amazon SNS 发送呈现失败事件通知。当您收到呈现失败事件通知时,您可以验证哪些邮件包含无效的内容、修复问题,然后重新发送邮件。

此部分中的过程可选,不过强烈建议使用。

配置呈现失败事件通知
  1. 创建 Amazon SNS 主题。有关操作步骤,请参阅《Amazon Simple Notification Service 开发人员指南》中的创建主题

  2. 订阅 Amazon SNS 主题。例如,如果您希望通过电子邮件接收呈现失败通知,请使用电子邮件端点 (即,您的电子邮件地址) 订阅主题。

    有关操作步骤,请参阅《Amazon Simple Notification Service 开发人员指南》中的订阅主题

  3. 完成针对事件发布设置 Amazon SNS 事件目标中的操作步骤来设置您的配置集,以将呈现失败事件发送到您的 Amazon SNS 主题。

第 2 部分:创建电子邮件模板

在本节中,您将使用 CreateTemplate API 操作创建具有个性化属性的新电子邮件模板。

此过程假定您已安装和配置 AWS CLI。有关安装和配置的更多信息 AWS CLI,请参阅《AWS Command Line Interface 用户指南》

创建模板
  1. 在文本编辑器中,创建一个新文件。将以下代码粘贴到该文件中。

    { "Template": { "TemplateName": "MyTemplate", "SubjectPart": "Greetings, {{name}}!", "HtmlPart": "<h1>Hello {{name}},</h1><p>Your favorite animal is {{favoriteanimal}}.</p>", "TextPart": "Dear {{name}},\r\nYour favorite animal is {{favoriteanimal}}." } }

    此代码包含以下属性:

    • TemplateName-模板的名称。当您发送电子邮件时,您将引用此名称。

    • SubjectPart— 电子邮件的主题行。此属性可能包含替换标签。这些标签使用以下格式:{{tagname}}。当您发送电子邮件时,您可以为每个目标的 tagname 指定一个值。

      前面的示例包含两个标签:{{name}}{{favoriteanimal}}

    • HtmlPart— 电子邮件的 HTML 正文。此属性可能包含替换标签。

    • TextPart— 电子邮件的正文。电子邮件客户端不显示 HTML 电子邮件的收件人将会看到此版本的电子邮件。此属性可能包含替换标签。

  2. 自定义前面的示例以满足您的需求,然后将该文件另存为 mytemplate.json

  3. 在命令行中键入以下命令,使用 CreateTemplate API 操作创建新的模板:

    aws ses create-template --cli-input-json file://mytemplate.json

第 3 部分:发送个性化电子邮件

在您创建电子邮件模板后,可使用它来发送电子邮件。有两种 API 操作可让您使用模板发送电子邮件:SendTemplatedEmailSendBulkTemplatedEmailSendTemplatedEmail 操作对于将自定义电子邮件发送到单个目标很有用 (将收到同一电子邮件的一系列“收件人”、“抄送”和“密件抄送”收件人)。SendBulkTemplatedEmail 操作对于在对 Amazon SES API 的单次调用中将唯一电子邮件发送到多个目标很有用。本节提供了如何通过这两个操作使用 AWS CLI 发送电子邮件的示例。

将模板化电子邮件发送到单个目标

您可以使用 SendTemplatedEmail 操作将电子邮件发送到单个目标。Destination 对象中的所有收件人都会收到同一电子邮件。

将模板化电子邮件发送到单个目标
  1. 在文本编辑器中,创建一个新文件。将以下代码粘贴到该文件中。

    { "Source":"Mary Major <mary.major@example.com>", "Template": "MyTemplate", "ConfigurationSetName": "ConfigSet", "Destination": { "ToAddresses": [ "alejandro.rosalez@example.com" ] }, "TemplateData": "{ \"name\":\"Alejandro\", \"favoriteanimal\": \"alligator\" }" }

    此代码包含以下属性:

    • - 发件人的电子邮件地址。

    • 模板 - 应用于电子邮件的模板的名称。

    • ConfigurationSetName— 发送电子邮件时要使用的配置集的名称。

      注意

      我们建议您使用配置为将呈现失败事件发布到 Amazon SNS 的配置集。有关更多信息,请参阅 第 1 部分:设置呈现故障事件通知

    • Destination – 收件人地址。您可以包含多个“收件人”、“抄送”和“密件抄送”地址。当您使用 SendTemplatedEmail 操作时,所有收件人收到相同的电子邮件。

    • TemplateData— 包含键值对的转义的 JSON 字符串。键与模板中的变量 (例如 {{name}}) 对应。值表示用来替换电子邮件中的变量的内容。

  2. 更改上一步骤代码中的值以满足您的需求,然后将该文件另存为 myemail.json

  3. 在命令行键入以下命令,发送电子邮件:

    aws ses send-templated-email --cli-input-json file://myemail.json

将模板化电子邮件发送到多个目标

您可以使用 SendBulkTemplatedEmail 操作在对 API 的单次调用中将电子邮件发送到多个目标。Amazon SES 会向每个 Destination 对象中的收件人发送唯一的电子邮件。

将模板化电子邮件发送到多个目标
  1. 在文本编辑器中,创建一个新文件。将以下代码粘贴到该文件中。

    { "Source":"Mary Major <mary.major@example.com>", "Template":"MyTemplate", "ConfigurationSetName": "ConfigSet", "Destinations":[ { "Destination":{ "ToAddresses":[ "anaya.iyengar@example.com" ] }, "ReplacementTemplateData":"{ \"name\":\"Anaya\", \"favoriteanimal\":\"angelfish\" }" }, { "Destination":{ "ToAddresses":[ "liu.jie@example.com" ] }, "ReplacementTemplateData":"{ \"name\":\"Liu\", \"favoriteanimal\":\"lion\" }" }, { "Destination":{ "ToAddresses":[ "shirley.rodriguez@example.com" ] }, "ReplacementTemplateData":"{ \"name\":\"Shirley\", \"favoriteanimal\":\"shark\" }" }, { "Destination":{ "ToAddresses":[ "richard.roe@example.com" ] }, "ReplacementTemplateData":"{}" } ], "DefaultTemplateData":"{ \"name\":\"friend\", \"favoriteanimal\":\"unknown\" }" }

    此代码包含以下属性:

    • - 发件人的电子邮件地址。

    • 模板 - 应用于电子邮件的模板的名称。

    • ConfigurationSetName— 发送电子邮件时要使用的配置集的名称。

      注意

      我们建议您使用配置为将呈现失败事件发布到 Amazon SNS 的配置集。有关更多信息,请参阅 第 1 部分:设置呈现故障事件通知

    • 目标 - 一个包含一个或多个目标的数组。

      • Destination – 收件人地址。您可以包含多个“收件人”、“抄送”和“密件抄送”地址。当您使用 SendBulkTemplatedEmail 操作时,同一 Destination 对象中的所有收件人都将收到相同的电子邮件。

      • ReplacementTemplateData— 包含键值对的 JSON 对象。键与模板中的变量 (例如 {{name}}) 对应。值表示用来替换电子邮件中的变量的内容。

    • DefaultTemplateData— 包含键值对的 JSON 对象。键与模板中的变量 (例如 {{name}}) 对应。值表示用来替换电子邮件中的变量的内容。此对象包含回退数据。如果 Destination 对象包含 ReplacementTemplateData 属性中的空 JSON 对象,则将使用 DefaultTemplateData 属性中的值。

  2. 更改上一步骤代码中的值以满足您的需求,然后将该文件另存为 mybulkemail.json

  3. 在命令行键入以下命令,发送批量电子邮件:

    aws ses send-bulk-templated-email --cli-input-json file://mybulkemail.json