本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用模板通过 Amazon SES API 发送个性化电子邮件
在 Amazon SES 中,您可以使用存储的模板或内联模板发送模板化电子邮件。
-
存储的模板-指使用 Amazon SES v2 API 中的CreateEmailTemplate
操作在 SES 中创建和保存的Template
资源。该模板包含电子邮件的主题和正文,其中包含与书面内容一致的变量(占位符)。调用SendEmail
或 SendBulkEmail
v2 API 操作时,会提供存储模板的名称和模板中占位符变量的动态数据。
存储的模板可以轻松重复使用,并且可以在发送类似类型的电子邮件时为您节省时间和精力。无需从头开始创建每封电子邮件,只需创建基本结构并设计一次,然后只需更新模板中的动态内容即可。
-
内联模板 — 不使用Template
资源,而是在调用SendEmail
或 SendBulkEmail
v2 API 操作时,会提供电子邮件的主题和正文,其中包含与书面内容内联的变量(占位符)以及这些占位符变量的值。
内联模板无需管理 SES 账户中的模板资源,从而简化了发送批量电子邮件的流程,并允许您将模板内容直接包含在应用程序逻辑中,从而简化了集成过程。它们不计入每个 20,000 个模板的限制。 AWS 区域
使用存储的模板时适用以下限制:
使用内联模板时适用以下限制:
以下内容适用于存储模板和内联模板:
本章包括使用存储模板和内联模板的过程和示例。
(可选)第 1 部分:设置渲染失败事件通知
如果您发送一封包含无效的个性化内容的电子邮件,那么 Amazon SES 可能接受该邮件,但无法传递它。因此,如果您计划发送个性化电子邮件,则应将 SES 配置为通过 Amazon SNS 发送渲染失败事件通知。当您收到呈现失败事件通知时,您可以验证哪些邮件包含无效的内容、修复问题,然后重新发送邮件。
此部分中的过程可选,不过强烈建议使用。
配置呈现失败事件通知
-
创建 Amazon SNS 主题。有关操作步骤,请参阅《Amazon Simple Notification Service 开发人员指南》中的创建主题。
-
订阅 Amazon SNS 主题。例如,如果您希望通过电子邮件接收呈现失败通知,请使用电子邮件端点 (即,您的电子邮件地址) 订阅主题。
有关操作步骤,请参阅《Amazon Simple Notification Service 开发人员指南》中的订阅主题。
-
完成针对事件发布设置 Amazon SNS 事件目标中的操作步骤来设置您的配置集,以将呈现失败事件发送到您的 Amazon SNS 主题。
(可选)第 2 部分:创建电子邮件模板
如果您打算使用存储的模板,本节将向您展示如何使用 CreateEmailTemplate
SES v2 API 操作来创建模板。如果要使用内联模板,可以跳过此步骤。
此过程假定您已安装和配置 AWS CLI。有关安装和配置的更多信息 AWS CLI,请参阅《AWS Command Line Interface 用户指南》。
创建模板
-
在文本编辑器中,创建一个新文件并粘贴以下代码,根据需要对其进行自定义。
{
"TemplateName": "MyTemplate",
"TemplateContent": {
"Subject": "Greetings, {{name}}!",
"Text": "Dear {{name}},\r\nYour favorite animal is {{favoriteanimal}}.",
"Html": "<h1>Hello {{name}},</h1><p>Your favorite animal is {{favoriteanimal}}.</p>"
}
}
此代码包含以下属性:
-
自定义前面的示例以满足您的需求,然后将该文件另存为 mytemplate.json
。
-
在命令行中,键入以下命令以使用 CreateEmailTemplate
v2 API 操作创建新模板:
aws sesv2 create-email-template --cli-input-json file://mytemplate.json
第 3 部分:发送个性化电子邮件
您可以使用以下两个 SES v2 API 操作使用存储的模板或内联模板发送电子邮件:
本节提供了如何通过这两个 AWS CLI 发送操作使用发送模板化电子邮件的示例。
向单个目标对象发送模板化电子邮件
您可以使用该SendEmail
操作向在单个目标对象中定义的一个或多个收件人发送电子邮件。Destination
对象中的所有收件人都会收到同一电子邮件。
向单个目标对象发送模板化电子邮件
-
根据您要使用存储的模板还是内联模板,选择要粘贴到文本编辑器中的相应代码示例,并根据需要对其进行自定义。
- Stored template code example
-
请注意,您在上一步中创建的模板被引用为TemplateName
参数的值。MyTemplate
{
"FromEmailAddress": "Mary Major <mary.major@example.com>",
"Destination": {
"ToAddresses": [
"alejandro.rosalez@example.com", "jimmy.jet@example.com"
]
},
"Content": {
"Template": {
"TemplateName": "MyTemplate",
"TemplateData": "{ \"name\":\"Alejandro\", \"favoriteanimal\": \"alligator\" }"
}
},
"ConfigurationSetName": "ConfigSet"
}
此代码包含以下属性:
-
FromEmailAddress— 发件人的电子邮件地址。
-
目标-包含在ToAddresses、CcAddresses和BccAddresses属性中定义的电子邮件收件人的对象。它们可以任意组合使用,并且可以包含一个或多个将接收相同电子邮件的电子邮件地址。
-
TemplateName— 要应用于电子邮件的Template
资源名称。
-
TemplateData— 包含键值对的转义的 JSON 字符串。这些键对应于存储模板的TemplateContent
属性中定义的变量,例如{{name}}
。这些值表示替换变量的内容。
-
ConfigurationSetName— 发送电子邮件时要使用的配置集的名称。
- Inline template code example
-
请注意,TemplateContent
属性(通常在存储的模板中定义)是与使其成为内联模板的TemplateData
属性一起内联定义的。
{
"FromEmailAddress": "Mary Major <mary.major@example.com>",
"Destination": {
"ToAddresses": [
"alejandro.rosalez@example.com", "jimmy.jet@example.com"
]
},
"Content": {
"Template": {
"TemplateContent": {
"Subject": "Greetings, {{name}}!",
"Text": "Dear {{name}},\r\nYour favorite animal is {{favoriteanimal}}.",
"Html": "<h1>Hello {{name}},</h1><p>Your favorite animal is {{favoriteanimal}}.</p>"
},
"TemplateData": "{ \"name\":\"Alejandro\", \"favoriteanimal\": \"alligator\" }"
}
},
"ConfigurationSetName": "ConfigSet"
}
此代码包含以下属性:
-
FromEmailAddress— 发件人的电子邮件地址。
-
目标-包含在ToAddresses、CcAddresses和BccAddresses属性中定义的电子邮件收件人的对象。它们可以任意组合使用,并且可以包含一个或多个将接收相同电子邮件的电子邮件地址。
-
TemplateContent— 用于存放以下属性的容器:
-
SubjectPart – 电子邮件的主题行。此属性可能包含替换标签。这些标签使用以下格式:{{tagname}}
。当您发送电子邮件时,您可以为每个目标的 tagname
指定一个值。
-
HtmlPart— 电子邮件的 HTML 正文。此属性可能包含替换标签。前面的示例包含两个标签:{{name}}
和 {{favoriteanimal}}
。
-
TextPart— 电子邮件的正文。电子邮件客户端未显示 HTML 内容的收件人将看到此版本的电子邮件。此属性也可能包含替换标签。
-
TemplateData— 包含键值对的转义的 JSON 字符串。这些键对应于此文件中TemplateContent
属性中定义的变量,例如{{name}}
。这些值表示替换变量的内容。
-
ConfigurationSetName— 发送电子邮件时要使用的配置集的名称。
-
自定义前面的示例以满足您的需求,然后将该文件另存为 myemail.json
。
-
在命令行中,键入以下 v2 API 命令以发送电子邮件:
aws sesv2 send-email --cli-input-json file://myemail.json
向多个目标对象发送模板化电子邮件
您只需调用 SES v2 API,即可使用该SendBulkEmail
操作向多个目标对象发送电子邮件。SES 向每个Destination
对象中的一个或多个收件人发送一封唯一的电子邮件。
向多个目标对象发送模板化电子邮件
-
根据您要使用存储的模板还是内联模板,选择要粘贴到文本编辑器中的相应代码示例,并根据需要对其进行自定义。
- Stored template code example
-
请注意,您在上一步中创建的模板被引用为TemplateName
参数的值。MyTemplate
{
"FromEmailAddress": "Mary Major <mary.major@example.com>",
"DefaultContent": {
"Template": {
"TemplateName": "MyTemplate",
"TemplateData": "{ \"name\":\"friend\", \"favoriteanimal\":\"unknown\" }"
}
},
"BulkEmailEntries": [
{
"Destination": {
"ToAddresses": [
"anaya.iyengar@example.com"
]
},
"ReplacementEmailContent": {
"ReplacementTemplate": {
"ReplacementTemplateData": "{ \"name\":\"Anaya\", \"favoriteanimal\":\"angelfish\" }"
}
}
},
{
"Destination": {
"ToAddresses": [
"liu.jie@example.com"
]
},
"ReplacementEmailContent": {
"ReplacementTemplate": {
"ReplacementTemplateData": "{ \"name\":\"Liu\", \"favoriteanimal\":\"lion\" }"
}
}
},
{
"Destination": {
"ToAddresses": [
"shirley.rodriguez@example.com"
]
},
"ReplacementEmailContent": {
"ReplacementTemplate": {
"ReplacementTemplateData": "{ \"name\":\"Shirley\", \"favoriteanimal\":\"shark\" }"
}
}
},
{
"Destination": {
"ToAddresses": [
"richard.roe@example.com"
]
},
"ReplacementEmailContent": {
"ReplacementTemplate": {
"ReplacementTemplateData": "{}"
}
}
}
],
"ConfigurationSetName": "ConfigSet"
}
此代码包含以下属性:
-
FromEmailAddress— 发件人的电子邮件地址。
-
DefaultContent— 包含TemplateName
和对象的 JSON TemplateData
对象。
-
TemplateName— 要应用于电子邮件的Template
资源名称。
-
TemplateData— 包含键值对,如果对象在属性中包含空的 JSON ReplacementEmailContent
对象{}
,则将使用这些ReplacementTemplateData
键值对。
-
BulkEmailEntries— 包含一个或多个Destination
对象的数组。
-
目标-包含在ToAddresses、CcAddresses和BccAddresses属性中定义的电子邮件收件人的对象。它们可以任意组合使用,并且可以包含一个或多个将接收相同电子邮件的电子邮件地址。
-
ReplacementTemplateData— 包含键值对的转义的 JSON 字符串。例如,这些键对应于模板中的变量{{name}}
。值表示用来替换电子邮件中的变量的内容。(如果此处的 JSON 字符串为空(由表示){}
,则将使用DefaultContent
对象中TemplateData
属性中定义的键值对。)
-
ConfigurationSetName— 发送电子邮件时要使用的配置集的名称。
- Inline template code example
-
请注意,TemplateContent
属性(通常在存储的模板中定义)是与使其成为内联模板的TemplateData
属性一起内联定义的。
{
"FromEmailAddress": "Mary Major <mary.major@example.com>",
"DefaultContent": {
"Template": {
"TemplateContent": {
"Subject": "Greetings, {{name}}!",
"Text": "Dear {{name}},\r\nYour favorite animal is {{favoriteanimal}}.",
"Html": "<h1>Hello {{name}},</h1><p>Your favorite animal is {{favoriteanimal}}.</p>"
},
"TemplateData": "{ \"name\":\"friend\", \"favoriteanimal\":\"unknown\" }"
}
},
"BulkEmailEntries": [
{
"Destination": {
"ToAddresses": [
"anaya.iyengar@example.com"
]
},
"ReplacementEmailContent": {
"ReplacementTemplate": {
"ReplacementTemplateData": "{ \"name\":\"Anaya\", \"favoriteanimal\":\"angelfish\" }"
}
}
},
{
"Destination": {
"ToAddresses": [
"liu.jie@example.com"
]
},
"ReplacementEmailContent": {
"ReplacementTemplate": {
"ReplacementTemplateData": "{ \"name\":\"Liu\", \"favoriteanimal\":\"lion\" }"
}
}
},
{
"Destination": {
"ToAddresses": [
"shirley.rodriguez@example.com"
]
},
"ReplacementEmailContent": {
"ReplacementTemplate": {
"ReplacementTemplateData": "{ \"name\":\"Shirley\", \"favoriteanimal\":\"shark\" }"
}
}
},
{
"Destination": {
"ToAddresses": [
"richard.roe@example.com"
]
},
"ReplacementEmailContent": {
"ReplacementTemplate": {
"ReplacementTemplateData": "{}"
}
}
}
],
"ConfigurationSetName": "ConfigSet"
}
此代码包含以下属性:
-
FromEmailAddress— 发件人的电子邮件地址。
-
DefaultContent— 包含TemplateContent
和对象的 JSON TemplateData
对象。
-
TemplateContent— 用于存放以下属性的容器:
-
SubjectPart – 电子邮件的主题行。此属性可能包含替换标签。这些标签使用以下格式:{{tagname}}
。当您发送电子邮件时,您可以为每个目标的 tagname
指定一个值。
-
HtmlPart— 电子邮件的 HTML 正文。此属性可能包含替换标签。前面的示例包含两个标签:{{name}}
和 {{favoriteanimal}}
。
-
TextPart— 电子邮件的正文。电子邮件客户端未显示 HTML 内容的收件人将看到此版本的电子邮件。此属性也可能包含替换标签。
-
TemplateData— 包含键值对,如果对象在属性中包含空的 JSON ReplacementEmailContent
对象{}
,则将使用这些ReplacementTemplateData
键值对。
-
BulkEmailEntries— 包含一个或多个Destination
对象的数组。
-
目标-包含在ToAddresses、CcAddresses和BccAddresses属性中定义的电子邮件收件人的对象。它们可以任意组合使用,并且可以包含一个或多个将接收相同电子邮件的电子邮件地址。
-
ReplacementTemplateData— 包含键值对的转义的 JSON 字符串。这些键对应于此文件中TemplateContent
属性中定义的变量,例如{{name}}
。值表示用来替换电子邮件中的变量的内容。(如果此处的 JSON 字符串为空(由表示){}
,则将使用DefaultContent
对象中TemplateData
属性中定义的键值对。)
-
ConfigurationSetName— 发送电子邮件时要使用的配置集的名称。
-
更改上一步骤代码中的值以满足您的需求,然后将该文件另存为 mybulkemail.json
。
-
在命令行中,键入以下 v2 API 命令以发送批量电子邮件:
aws sesv2 send-bulk-email --cli-input-json file://mybulkemail.json