在 Amazon SES 中创建和验证身份 - Amazon Simple Email Service

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

在 Amazon SES 中创建和验证身份

在 Amazon SES 中,您可以在域级别创建身份,也可以创建电子邮件地址身份。这些身份类型并不相互排斥。在大多数情况下,创建域身份就不需要再创建和验证单个电子邮件地址身份,除非您希望对特定电子邮件地址应用自定义配置。无论您是创建域并使用基于域的电子邮件地址,还是创建单独的电子邮件地址,这两种方法都有好处。您选择哪种方法取决于您的特定需求,如下所述。

创建和验证电子邮件地址身份是 SES 中最快的开启方式,但在域级别验证身份也有益处。当您验证电子邮件地址身份时,只有该电子邮件地址可用于发送邮件,但当您验证域身份时,您可以从已验证域的任何子域或电子邮件地址发送电子邮件,而无需单独验证每一个。例如,如果您创建并验证名为 example.com 的域身份,则无需为 a.example.com、a.b.example.com 创建单独的子域身份,也无需为 user@example.com、user@a.example.com 等创建单独的电子邮件地址身份。

然而,请记住,使用从其域继承的验证的电子邮件地址身份仅限于直接发送电子邮件。如果想要进行更高级的发送,您还必须明确地将其验证为电子邮件地址身份。高级发送包括将电子邮件地址与配置集、委托发送的策略授权以及覆盖域设置的配置一起使用。

为了帮助阐明上述验证继承和电子邮件发送功能,下表对域/电子邮件地址验证的每种组合进行了分类,并列出了每种组合的继承、发送级别和显示状态:

仅验证域 仅验证电子邮件地址 验证域和电子邮件地址
继承级别 子域和电子邮件地址继承父域的验证。 明确验证电子邮件地址。
  • 子域继承父域的验证。

  • 明确验证电子邮件地址。

发送级别 电子邮件地址限制为直接发送电子邮件。 电子邮件地址可用于高级发送* 电子邮件地址可用于高级发送*
显示的状态 控制台/API 状态:
  • 域/子域 = 已验证

  • 电子邮件地址 = 未验证。

控制台/API 状态:
  • 电子邮件地址 = 已验证

控制台/API 状态:
  • 域/子域 = 已验证

  • 电子邮件地址 = 已验证。

*高级发送包括将电子邮件地址与配置集、委托发送的策略授权以及覆盖域设置的配置一起使用。

要从多个 AWS 区域 的同一个域或电子邮件地址发送电子邮件,您必须为每个区域创建并验证单独的身份。在每个区域中,您最多可以验证 10,000 个身份。

在创建和验证域与电子邮件地址身份时,请考虑以下各项:

  • 您可以从已验证域的任意子域或电子邮件地址发送电子邮件,而无需单独验证每个子域或电子邮件地址。例如,如果您为 example.com 创建并验证身份,则不需要为 a.example.com、a.b.example.com、user@example.com、user@a.example.com 等创建单独的身份。

  • 按照 RFC 1034 中的规定,每个 DNS 标签最多可包含 63 个字符,域名总长度不得超过 255 个字符。

  • 如果您验证共享一个根域的域、子域或电子邮件地址,则身份设置(例如反馈通知)将应用于您已验证的最精细级别。

    • 已验证的电子邮件地址身份设置会覆盖已验证的域身份设置。

    • 已验证子域身份设置会覆盖已验证的域身份设置,较低级别的子域设置会覆盖较高级别的子域设置。

      例如,假设您验证了 user@a.b.example.com、a.b.example.com、b.example.com 和 example.com。这些已验证的身份设置将用于以下场景:

      • 从 user@example.com (该电子邮件地址未经专门验证) 发送的电子邮件将使用 example.com 的设置。

      • 从 user@a.b.example.com (该电子邮件地址经过专门验证) 发送的电子邮件将使用 user@a.b.example.com 的设置。

      • 从 user@b.example.com (该电子邮件地址未经专门验证) 发送的电子邮件将使用 b.example.com 的设置。

  • 您可以向已验证的电子邮件地址添加标签而无需执行额外的验证步骤。要向电子邮件地址添加标签,请在账户名称和“at”符号 (@) 之间添加加号 (+),后跟文本标签。例如,如果您已验证 sender@example.com,则可以使用 sender+myLabel@example.com 作为您的电子邮件的“From”或“Return-Path”地址。您可以使用此特征来实施可变信封退回路径 (VERP)。然后,您可以使用 VERP 检测无法送达的电子邮件地址并从您的邮件列表中删除它们。

  • 域名不区分大小写。如果您验证了 example.com,则也可以从 EXAMPLE.com 发送电子邮件。

  • 电子邮件地址区分大小写。如果您验证了 sender@EXAMPLE.com,将无法从 sender@example.com 发送电子邮件,除非同时验证了 sender@example.com。

  • 在每个 AWS 区域 中,您最多可以验证 10000 个身份 (域和电子邮件地址的任意组合)。

提示

如果您是首次使用 SES,可以使用入门向导来创建和验证您的第一个身份(电子邮件地址或域)。

创建域身份

创建域身份中有一部分是配置其基于 DKIM 的验证。域名密钥识别邮件 (DKIM) 是 Amazon SES 用于验证域所有权和接收邮件服务器用于验证电子邮件真实性的一种电子邮件身份验证方法。您可以选择使用 Easy DKIM 或自带 DKIM (BYODKIM) 来配置 DKIM,根据您的选择,您必须按照以下方式配置私有密钥的签名密钥长度:

  • Easy DKIM - 接受 Amazon SES 默认的 2048 位,或选择 1024 位进行覆盖。

  • BYODKIM - 私有密钥长度必须至少为 1024 位,最多为 2048 位。

有关 DKIM 签名密钥长度以及如何更改密钥长度的详情,请参阅 DKIM 签名密钥长度

以下过程介绍如何使用 Amazon SES 控制台来创建域身份。

创建域身份
  1. 登录AWS Management Console并打开 Amazon SES 控制台,网址为 https://console.aws.amazon.com/ses/

  2. 在导航窗格中的 Configuration(配置)下,选择 Verified identities(已验证身份)。

  3. 选择创建身份

  4. 身份详细信息下,选择作为要创建的身份类型。您必须有权访问域的 DNS 设置才能完成验证过程。

  5. 字段中输入域或子域的名称。

    提示

    如果您的域是 www.example.com,请输入 example.com 作为您的域。请勿包含“www.” 部分,如果包含,域验证过程将不会成功。

  6. (可选)如果要分配默认配置集,请选中该复选框。

    1. 对于默认配置集,选择要分配给身份的现有配置集。如果尚未创建任何配置集,请参阅 在 SES 中使用配置集

      注意

      只有当发送时未指定其他配置集时,Amazon SES 才会按默认应用分配的配置集。如果指定了配置集,Amazon SES 将应用指定的配置集来代替默认的配置集。

  7. (可选)如果要使用自定义 MAIL FROM 域,请选中该复选框并完成以下步骤。有关更多信息,请参阅使用自定义 MAIL FROM 域

    1. 对于 MAIL FROM Domain (MAIL FROM 域),输入要用作 MAIL FROM 子域的域。此域必须是您要验证的域身份的子域。MAIL FROM 域不应是您从中发送电子邮件的域。

    2. 对于 MX 故障时的行为,请指明如果 Amazon SES 在发送时找不到所需的 MX 记录,则应采取哪些操作。请选择以下任一选项:

      • 使用默认 MAIL FROM 域 - 如果自定义 MAIL FROM 域的 MX 记录未正确设置,则 Amazon SES 将使用 amazonses.com 的子域。子域根据您使用 Amazon SES 的AWS 区域而变化。

      • 拒绝邮件 – 如果未正确设置自定义 MAIL FROM 域的 MX 记录,那么 Amazon SES 将返回 MailFromDomainNotVerified 错误。如果选择此选项,则您尝试从此域发送的电子邮件将被自动拒绝。

    3. 对于向 Route53 发布 DNS 记录,如果您的域通过 Amazon Route 53 托管,则有选择权让SES在创建时通过勾选 Enabled 来发布关联的 TXT 和 MX 记录。如果宁愿稍后发布这些记录,请清除 Enabled 复选框。(您可以稍后再来通过编辑身份将记录发布到 Route 53 - 请参阅 在 Amazon SES 中编辑现有身份。)

  8. (可选)配置基于 DKIM 的自定义验证在 SES 默认设置之外,该设置使用 Easy DKIM 和 2048 位注册长度下,验证您的域,展开高级 DKIM 设置然后,选择要配置的 DKIM 的类型:

    1. Easy DKIM

      1. 身份类型字段中,选择 Easy DKIM

      2. DKIM 签名密钥长度字段中,选择 RSA_2048_BIT 或 RSA_1024_BIT

      3. 对于将 DNS 记录发布到 Route53,如果您的域通过 Amazon Route 53 托管,则有选择权让SES在创建时通过勾选 Enabled (已启用)来发布关联的 CNAME 记录。如果宁愿稍后发布这些记录,请清除 Enabled 复选框。(您可以稍后再来通过编辑身份将记录发布到 Route 53 - 请参阅 在 Amazon SES 中编辑现有身份。)

    2. 提供 DKIM 身份验证令牌 (BYODKIM)

      1. 确保您已生成公有-私有密钥对,并且已添加公有密钥到您的 DNS 主机提供商。有关更多信息,请参阅提供 Amazon SES 中您自己的 DKIM 身份验证令牌 (BYODKIM)

      2. 身份类型字段中,选择提供 DKIM 身份验证令牌 (BYODKIM)

      3. 对于 Private key(私有密钥),粘贴从您的公有-私有密钥对生成的私有密钥。私有密钥必须使用至少 1024 位 RSA 加密(至多 2048 位),并且必须使用 base64 (PEM) 编码进行编码。

        注意

        您必须删除生成的私有密钥的第一行和最后一行(分别为 -----BEGIN PRIVATE KEY----------END PRIVATE KEY-----)。此外,还必须删除生成的私有密钥中的换行符。产生的值是一个字符串,不包含空格或换行符。

      4. 对于选择器名称,输入您在域的 DNS 设置中指定的选择器的名称。

  9. 确保在 DKIM 签名字段中,选中已启用复选框。

  10. (可选)通过包含标签键和该键的可选值,向域身份添加一个或多个标签

    1. 选择添加新标签,然后输入。您可以选择为标签添加

    2. 重复此操作,但附加的标签不超过 50 个,或选择删除以删除标签。

  11. 选择创建身份

在使用 DKIM 创建和配置您的域身份以后,必须与您的 DNS 提供商完成验证过程 - 继续转到与您的 DNS 提供商一起验证 DKIM 域身份并执行适用于用来配置身份的 DKIM 类型的 DNS 身份验证过程。

与您的 DNS 提供商一起验证 DKIM 域身份

在创建使用 DKIM 配置的域身份以后,您必须和您的 DNS 提供商按照以下对应的身份验证过程为您选择的 DKIM 类型完成验证过程。

如果您尚未创建域身份,请参阅创建域身份

注意

验证域身份需要访问域的 DNS 设置。对这些设置的更改最长可能需要 72 小时才能生效。

与您的 DNS 提供商一起验证 DKIM 域身份
  1. Loaded identities(已加载的身份)表中,选择您想要验证的域。

  2. 在身份详细信息页面的 Authentication(身份验证)选项卡上,展开 Publish DNS records(发布 DNS 记录)。

  3. 根据配置域时使用的 DKIM 风格,Easy DKIMBYODKIM,请按照对应的说明进行操作:

    Easy DKIM
    验证使用 Easy DKIM 配置的域
    1. Publish DNS records(发布 DNS 记录)表中,复制三条会在此部分显示并发布(添加)到您的 DNS 提供商的别名记录。或者,您可以选择下载 .csv 记录集以将记录副本保存到您的电脑中。

      下图显示了要发布到 DNS 提供商的别名记录的示例。

      
                                        身份的详细信息页的 DKIM 部分。显示了三个虚构的 CNAME 记录。
    2. 添加别名记录到您的 DNS 主机提供商的各自域的 DNS 设置:

      • 所有 DNS 主机提供商(Route 53 除外)– 登录到您的域的 DNS 或 Web 托管提供商,然后添加别名记录,这些记录包含您之前复制或保存的值。不同的提供商具有不同的 DNS 记录更新过程。请在执行这些过程以后参阅 DNS/托管提供商表

        注意

        少数 DNS 提供商不允许记录名称中包含下划线 (_)。但是,DKIM 记录名称中的下划线是必需的。如果您的 DNS 提供商不允许您在记录名称中输入下划线,请联系提供商的客户支持团队以获取帮助。

      • Route 53 是您的 DNS 主机提供商 – 如果您在使用 SES 发送电子邮件时使用的相同账户上使用的 Route 53,并且域已注册,SES 将自动更新您的域的 DNS 设置(若您在创建时启用 SES 来发布它们)。或者,您可以在创建后通过点击按钮轻松将它们发布到 Route 53 - 见 在 Amazon SES 中编辑现有身份。如果您的 DNS 设置未自动更新,或者您要将 CNAME 记录添加到 Route 53,但这些记录与您使用 SES 发送电子邮件时所使用的账户不同,请完成 Editing records(编辑记录)中的步骤。

      • 如果您不确定您的 DNS 提供商是谁 – 请询问您的系统管理员以获取更多信息。

    BYODKIM
    验证使用 BYODKIM 配置的域
    1. 概括而言,当使用 BYODKIM 创建了域或使用 BYODKIM 配置了现有域时,您要在 SES 控制台的 Advance DKIM Settings(高级 DKIM 设置)页面上将私有密钥(来自自行生成的公有/私有密钥对)和选择器名称前缀添加至其对应的字段。现在,您必须通过为您的 DNS 主机提供商更新以下记录,完成验证过程。

    2. Publish DNS records(发布 DNS 记录)表中,复制会在 Name(名称)列显示并发布(添加)到您的 DNS 提供商的选择器名称记录。或者,您可以选择 Download .csv record set(下载 .csv 记录集)以将其副本保存到您的电脑中。

      下图显示了要发布到 DNS 提供商的选择器名称记录的示例。

      
                                        身份的详细信息页的 DKIM 部分。显示了三个虚构的 CNAME 记录。
    3. 登录到您的域的 DNS 或 Web 托管提供商,然后添加您之前复制或保存的选择器名称记录。不同的提供商具有不同的 DNS 记录更新过程。请在执行这些过程以后参阅 DNS/托管提供商表

      注意

      少数 DNS 提供商不允许记录名称中包含下划线 (_)。但是,DKIM 记录名称中的下划线是必需的。如果您的 DNS 提供商不允许您在记录名称中输入下划线,请联系提供商的客户支持团队以获取帮助。

    4. 如果您尚未执行这些过程,请确保将来自您自行生成的公有/私有密钥对的公有密钥添加到您的域的 DNS 或 Web 托管提供商。

      请注意,在 Publish DNS records(发布 DNS 记录)表中,出现在 Value(值)列的公有密钥记录只显示“p=customerProvidedPublicKey”,作为保存到计算机或提供给 DNS 提供商的公有密钥的占位符。

      注意

      当您将公有密钥发布(添加)到 DNS 提供商时,必须按如下所示进行格式化:

      • 您必须删除生成的公有密钥的第一行和最后一行(分别为 -----BEGIN PUBLIC KEY----------END PUBLIC KEY-----)。此外,您还必须删除生成的公有密钥中的换行符。产生的值是一个字符串,不包含空格或换行符。

      • 您必须包含 p= 前缀,如 Publish DNS records(发布 DNS 记录)表中的 Value(值)列所示。

  4. 对 DNS 设置的更改最长可能需要 72 小时才能生效。一旦 Amazon SES 在域的 DNS 设置中检测到全部必需的 DKIM 记录,则验证过程完成。域的 DKIM 配置显示为成功身份状态显示为已验证

  5. 如果想配置和验证自定义 MAIL FROM 域,则按照配置自定义 MAIL FROM 域中的过程进行操作。

下表包含的链接指向几个广泛使用的 DNS 提供商的文档。此列表并不详尽无遗,也不表示认可;同样,如果您的 DNS 提供商未列出,这并不意味着您不能将该域与 Amazon SES 一起使用。

DNS/托管提供商 文档链接

GoDaddy

添加 CNAME 记录(外部链接)

DreamHost

如何添加自定义 DNS 记录?(外部链接)

Cloudflare

在 CloudFlare 中管理 DNS 记录(外部链接)

HostGator

通过 HostGator/eNom 管理 DNS 记录(外部链接)

Namecheap

如何为我的域添加 TXT/SPF/DKIM/DMARC 记录?(外部链接)

Names.co.uk

更改您的域的 DNS 设置(外部链接)

Wix

在您的 Wix 账户中添加或更新 CNAME 记录(外部链接)

域验证故障排除

如果您完成了上述步骤,但在 72 小时后域仍未通过验证,请检查以下各项:

  • 请确保您在正确的字段中输入了 DNS 记录的值。某些 DNS 提供商将 Name/host (名称/主机) 字段称为 Host (主机)Hostname (主机名)。此外,一些提供商将 Record value (记录值) 字段称为 Points to (指向)Result (结果)

  • 确保您的提供商没有自动将您的域名追加到您在 DNS 记录中输入的 Name/host (名称/主机) 值后面。有些提供商附加域名,而不指示已经执行了此操作。如果您的提供商将您的域名附加到 Name/host (名称/主机) 值,则从值的末尾删除域名。您也可以尝试添加句点到 DNS 记录中值的末尾。此句点向提供商指示域名是完全限定的。

  • 每个 DNS 记录的 Name/host (名称/主机) 值中都需要下划线字符 (_)。如果您的提供商不允许 DNS 记录名称中的下划线,请联系提供商的客户支持部门以获取更多帮助。

  • 添加到您的域的 DNS 设置的验证记录对于每个 AWS 区域 是不同的。如果您想要使用域从多个 AWS 区域 发送电子邮件,您必须在其中的每个区域中创建和验证单独的域身份。

创建电子邮件地址身份

完成以下过程以使用 Amazon SES 控制台创建电子邮件地址身份。

要创建电子邮件地址身份(控制台)
  1. 登录AWS Management Console并打开 Amazon SES 控制台,网址为 https://console.aws.amazon.com/ses/

  2. 在导航窗格中的 Configuration(配置)下,选择 Verified identities(已验证身份)。

  3. 选择创建身份

  4. 身份详细信息下,选择电子邮件地址作为要创建的身份类型。

  5. 对于 Email address (电子邮件地址),输入您要使用的电子邮件地址。电子邮件地址必须是您能接收邮件并且有权访问的地址。

  6. (可选)如果要分配默认配置集,请选中该复选框。

    1. 对于默认配置集,选择要分配给身份的现有配置集。如果尚未创建任何配置集,请参阅 在 SES 中使用配置集

      注意

      只有当发送时未指定其他配置集时,Amazon SES 才会按默认应用分配的配置集。如果指定了配置集,Amazon SES 将应用指定的配置集来代替默认的配置集。

  7. (可选)通过包含标签键和该键的可选值,向域身份添加一个或多个标签

    1. 选择添加新标签,然后输入。您可以选择为标签添加

    2. 重复此操作,但附加的标签不超过 50 个,或选择删除以删除标签。

  8. 要创建您的电子邮件地址身份,请选择创建身份。创建后,您应在五分钟内收到验证电子邮件。下一个步骤是按照下一节中的验证程序验证您的电子邮件地址。

    注意

    您可以自定义发送到您尝试验证的电子邮件地址的邮件。有关更多信息,请参阅使用自定义验证电子邮件模板

现在您已创建电子邮件地址身份,您必须完成验证过程 – 继续验证电子邮件地址身份

验证电子邮件地址身份

在创建电子邮件地址身份后,您必须完成验证过程。

如果您尚未创建电子邮件地址身份,请参阅创建电子邮件地址身份

验证电子邮件地址身份
  1. 检查用于创建您的身份的电子邮件地址的收件箱,并查看是否有来自 no-reply-aws@amazon.com 的电子邮件。

  2. 打开电子邮件并单击链接即可完成电子邮件地址的验证过程。完成后,身份状态将更新为已验证

电子邮件地址验证问题排查

如果您在创建身份后五分钟内没有收到验证电子邮件,请尝试以下问题排查步骤:

  • 确保您正确地输入了电子邮件地址。

  • 请确保您尝试验证的电子邮件地址能够接收电子邮件。您可以使用其他电子邮件地址发送测试电子邮件到您要验证的地址来测试此地址。

  • 检查您的垃圾邮件文件夹。

  • 验证电子邮件中的链接将在 24 小时后过期。要发送新的验证电子邮件,请选择身份详细信息页面顶部的重新发送

创建和验证身份并同时分配默认配置集

您可以使用 Amazon SES API v2 中的 CreateEmailIdentity 操作,同时创建新的电子邮件身份并设置其默认配置集。

注意

在完成此部分中的过程之前,必须安装和配置 AWS CLI。有关更多信息,请参阅 AWS Command Line Interface 用户指南

要使用 AWS CLI 设置默认配置集

aws sesv2 create-email-identity --email-identity ADDRESS-OR-DOMAIN --configuration-set-name CONFIG-SET

在前面的命令中,将 ADDRESS-OR-DOMAIN 替换为您要验证的电子邮件身份。将 CONFIG-SET 替换为您要设置为该身份的默认配置集的配置集的名称。

如果该命令成功执行,它将退出并且不提供任何输出。

验证您的电子邮件地址

  1. 检查您正在验证的电子邮件地址的收件箱。您将收到具有以下主题行的邮件:"Amazon Web Services - Email Address Verification Request in region RegionName,",其中,RegionName 是您尝试在其中验证电子邮件地址的 AWS 区域 的名称。

    打开该邮件,然后单击其中的链接。

    注意

    验证邮件中的链接将在发送该邮件 24 小时后过期。在您收到验证电子邮件 24 小时后,重复步骤 1–5 可收到具有有效链接的验证电子邮件。

  2. 在 Amazon SES 控制台中的 Identity Management (身份管理) 下,选择 Email Addresses (电子邮件地址)。在电子邮件地址列表中,找到您要验证的电子邮件地址。如果已验证此电子邮件地址,则状态列中的值为“已验证”。

验证您的域

如果您在上述命令行过程中为 --email-identity 参数输入了域名,请参阅验证域身份了解更多信息。

使用自定义验证电子邮件模板

当您尝试验证电子邮件地址时,Amazon SES 会向该地址发送一封电子邮件,其内容类似下图所示的示例。

有几个 Amazon SES 客户构建了通过 Amazon SES 代表其自己的客户发送电子邮件的应用程序(例如电子邮件营销套件或票证系统)。这些应用程序的最终用户可能会对电子邮件验证过程感到困惑:验证电子邮件使用的是 Amazon SES 品牌,而不是应用程序的品牌,并且这些最终用户从未直接注册使用 Amazon SES。

如果您的 Amazon SES 使用案例要求您的客户验证其电子邮件地址以便使用 Amazon SES,您可以创建自定义的验证电子邮件。这些自定义电子邮件有助于减少客户困扰,并加快您的客户完成注册过程的速度。

注意

要使用此特征,您的 Amazon SES 账户必须脱离沙盒。有关更多信息,请参阅申请生产访问权限(移出 Amazon SES 沙箱)

创建自定义验证电子邮件模板

要创建自定义验证电子邮件,请使用 CreateCustomVerificationEmailTemplate API 操作。此操作使用以下输入:

属性 描述
TemplateName 模板名称。您指定的名称必须唯一。
FromEmailAddress 发出验证电子邮件的电子邮件地址。您指定的地址或域必须经过验证,才能用于您的 Amazon SES 账户。
注意

FromEmailAddress 属性不支持显示名称 (也称为“友好发件人”名称)。

TemplateSubject 验证电子邮件的主题行。
TemplateContent 电子邮件正文。电子邮件正文可包含 HTML,但存在一定的限制。有关更多信息,请参阅自定义验证电子邮件常见问题
SuccessRedirectionURL 在成功验证用户电子邮件地址的情况下将用户转到的 URL。
FailureRedirectionURL 在未成功验证用户电子邮件地址的情况下将用户转到的 URL。

您可以使用 AWS 开发工具包或 AWS CLI 通过 CreateCustomVerificationEmailTemplate 操作创建自定义验证电子邮件模板。要了解关于 AWS SDK 详情,请参阅用于 Amazon Web Services 的工具。有关 AWS CLI 的更多信息,请参阅 AWS 命令行界面

下一节包含使用 AWS CLI 创建自定义验证电子邮件的步骤。这些步骤假定您已安装和配置 AWS CLI。有关安装和配置 AWS CLI 的更多信息,请参阅 AWS Command Line Interface 用户指南

注意

您必须使用 1.14.6 或更高版本的 AWS CLI 才能完成本节中所述步骤。为了获得最佳效果,请升级到最新版本的 AWS CLI。有关更新 AWS CLI 的更多信息,请参阅 AWS Command Line Interface 用户指南中的安装 AWS Command Line Interface

  1. 在文本编辑器中,创建一个新文件。将以下内容粘贴到编辑器中:

    { "TemplateName": "SampleTemplate", "FromEmailAddress": "sender@example.com", "TemplateSubject": "Please confirm your email address", "TemplateContent": "<html> <head></head> <body style='font-family:sans-serif;'> <h1 style='text-align:center'>Ready to start sending email with ProductName?</h1> <p>We here at Example Corp are happy to have you on board! There's just one last step to complete before you can start sending email. Just click the following link to verify your email address. Once we confirm that you're really you, we'll give you some additional information to help you get started with ProductName.</p> </body> </html>", "SuccessRedirectionURL": "https://www.example.com/verifysuccess", "FailureRedirectionURL": "https://www.example.com/verifyfailure" }
    重要

    为提高可读性,上例中的 TemplateContent 属性包含了换行符。如果将以上示例粘贴到文本文件中,请先删除换行符再继续。

    TemplateNameFromEmailAddressTemplateSubjectTemplateContentSuccessRedirectionURLFailureRedirectionURL 的值替换为您自己的值。

    注意

    您为 FromEmailAddress 参数指定的电子邮件地址必须经过验证,或者必须是已验证域中的地址。有关更多信息,请参阅Amazon SES 中已验证的身份

    完成后,将文件另存为 customverificationemail.json

  2. 在命令行键入以下命令,创建自定义验证电子邮件模板:

    aws sesv2 create-custom-verification-email-template --cli-input-json file://customverificationemail.json
  3. (可选)可以键入以下命令确认模板已创建:

    aws sesv2 list-custom-verification-email-templates

编辑自定义验证电子邮件模板

您可以使用 UpdateCustomVerificationEmailTemplate 操作编辑自定义验证电子邮件模板。此操作接受与 CreateCustomVerificationEmailTemplate 操作相同的输入 (即 TemplateNameFromEmailAddressTemplateSubjectTemplateContentSuccessRedirectionURLFailureRedirectionURL 属性)。但是,对于 UpdateCustomVerificationEmailTemplate 操作,这些属性都不是必需的。当为 TemplateName 传递与现有自定义验证电子邮件模板名称相同的值时,您指定的属性将覆盖模板中原有的属性。

使用自定义模板发送验证电子邮件

在创建至少一个自定义验证电子邮件模板之后,您可以调用 SendCustomVerificationEmail API 操作将它发送给客户。可以使用任意 AWS 开发工具包或使用 AWS CLI 调用 SendCustomVerificationEmail 操作。SendCustomVerificationEmail 操作使用以下输入:

属性 描述
EmailAddress 要验证的电子邮件地址。
TemplateName 发送到待验证电子邮件地址的自定义验证电子邮件模板的名称。
ConfigurationSetName (可选) 发送验证电子邮件时要使用的配置集的名称。

例如,假设您的客户在您的应用程序中使用表单注册您的服务。当客户填写并提交表单之后,应用程序将调用 SendCustomVerificationEmail 操作,传递客户的电子邮件地址和您要使用的模板的名称。

客户将收到一封使用您创建的自定义电子邮件模板的电子邮件。Amazon SES 会为收件人自动添加一个唯一链接,以及简短的免责声明。下图显示了使用在创建自定义验证电子邮件模板中创建的模板的示例验证电子邮件。

自定义验证电子邮件常见问题

本部分包含有关自定义验证电子邮件模板特征的常见问题解答。

问题 1:我可以创建多少个自定义验证电子邮件模板?

您可以为每个 Amazon SES 账户创建最多 50 个自定义验证电子邮件模板。

问题 2:如何向收件人显示自定义验证电子邮件?

自定义验证电子邮件模板包含您在创建模板时指定的内容,后跟收件人必须单击以验证其电子邮件地址的链接。

问题 3:我是否可以预览自定义验证电子邮件?

要预览自定义验证电子邮件,请使用 SendCustomVerificationEmail 操作向您自己的地址发送一封验证电子邮件。如果您不单击验证链接,那么 Amazon SES 不会创建新的身份。如果您单击验证链接,您可以选择使用 DeleteIdentity 操作删除新创建的身份。

问题 4:我是否可以在自定义验证电子邮件模板中包含图像?

您可以使用 base64 编码在模板 HTML 中嵌入图像。当您以这种方式嵌入图像时,Amazon SES 会自动将图像转换为附件。您可以在命令行中发出以下命令之一对图像进行编码:

Linux, macOS, or Unix
base64 -i imagefile.png | tr -d '\n' > output.txt
Windows
certutil -encodehex -f imagefile.png output.txt 0x40000001

imagefile.png 替换为您要编码的文件的名称。在上面的两个命令中,base64 编码的图像都保存到 output.txt

您可以在模板的 HTML 中加入以下内容以嵌入 base64 编码的图像:<img src="data:image/png;base64,base64EncodedImage"/>

在上一个示例中,将 png 替换为编码的图像的文件类型 (例如 jpg 或 gif),并将 base64EncodedImage 替换为 base64 编码的图像 (即前述命令之一中的 output.txt 的内容)。

问题 5:对自定义验证电子邮件模板中包含的内容是否有任何限制?

自定义验证电子邮件模板的大小不得超过 10 MB。此外,包含 HTML 的自定义验证电子邮件模板只能使用下表中列出的标签和属性。

HTML 标签 允许的属性
abbr class, id, style, title
acronym class, id, style, title
address class, id, style, title
area class, id, style, title
b class, id, style, title
bdo class, id, style, title
big class, id, style, title
blockquote cite, class, id, style, title
body class, id, style, title
br class, id, style, title
button class, id, style, title
caption class, id, style, title
center class, id, style, title
cite class, id, style, title
code class, id, style, title
col class, id, span, style, title, width
colgroup class, id, span, style, title, width
dd class, id, style, title
del class, id, style, title
dfn class, id, style, title
dir class, id, style, title
div class, id, style, title
dl class, id, style, title
dt class, id, style, title
em class, id, style, title
fieldset class, id, style, title
font class, id, style, title
form class, id, style, title
h1 class, id, style, title
h2 class, id, style, title
h3 class, id, style, title
h4 class, id, style, title
h5 class, id, style, title
h6 class, id, style, title
head class, id, style, title
hr class, id, style, title
html class, id, style, title
i class, id, style, title
img align, alt, class, height, id, src, style, title, width
input class, id, style, title
ins class, id, style, title
kbd class, id, style, title
label class, id, style, title
legend class, id, style, title
li class, id, style, title
map class, id, style, title
menu class, id, style, title
ol class, id, start, style, title, type
optgroup class, id, style, title
option class, id, style, title
p class, id, style, title
pre class, id, style, title
q cite, class, id, style, title
s class, id, style, title
samp class, id, style, title
select class, id, style, title
small class, id, style, title
span class, id, style, title
strike class, id, style, title
strong class, id, style, title
sub class, id, style, title
sup class, id, style, title
table class, id, style, summary, title, width
tbody class, id, style, title
td abbr, axis, class, colspan, id, rowspan, style, title, width
textarea class, id, style, title
tfoot class, id, style, title
th abbr, axis, class, colspan, id, rowspan, scope, style, title, width
thead class, id, style, title
tr class, id, style, title
tt class, id, style, title
u class, id, style, title
ul class, id, style, title, type
var class, id, style, title
注意

自定义验证电子邮件模板不能包含评论标签。

问题 6:我的账户中可以有多少个经过验证的电子邮件地址?

您的 Amazon SES 账户在每个 AWS 区域中可以包含最多 10000 个经过验证的身份。在 Amazon SES 中,身份包括经过验证的域和电子邮件地址。

问题 7:我是否可以使用 Amazon SES 控制台来创建自定义验证电子邮件模板?

目前,只能使用 Amazon SES API 来创建、编辑和删除自定义验证电子邮件。

问题 8:我是否可以跟踪在客户收到自定义验证电子邮件时发生的打开和单击事件?

自定义验证电子邮件不提供打开或单击跟踪能力。

问题 9:自定义验证电子邮件是否可以包含自定义标头?

自定义验证电子邮件不能包含自定义标头。

问题 10:我能否删除自定义验证电子邮件底部显示的文本?

以下文本将自动添加到每封自定义验证电子邮件的末尾,且不可删除:

如果您未请求验证此电子邮件地址,请忽略此消息。

问题 11:自定义验证电子邮件是否有 DKIM 签名?

要让验证电子邮件获得 DKIM 签名,必须配置在您创建验证电子邮件模板时在 FromEmailAddress 属性中指定的电子邮件地址以生成 DKIM 签名。有关为域和电子邮件地址设置 DKIM 的更多信息,请参阅在 Amazon SES 中使用 DKIM 对电子邮件进行身份验证

问题 12:为什么自定义验证电子邮件模板 API 操作不显示在软件开发工具包或 CLI 中?

如果您无法在软件开发工具包或 AWS CLI 中使用自定义验证电子邮件模板操作,您使用的可能是旧版本的软件开发工具包或 CLI。自定义验证电子邮件模板操作可在以下软件开发工具包和 CLI 中使用:

  • AWS Command Line Interface 的 1.14.6 版本或更高版本

  • AWS SDK for .NET 的 3.3.205.0 版本或更高版本

  • AWS SDK for C++ 的 1.3.20170531.19 版本或更高版本

  • AWS SDK for Go 的 1.12.43 版本或更高版本

  • AWS SDK for Java 的 1.11.245 版本或更高版本

  • AWS SDK for JavaScript 的 2.166.0 版本或更高版本

  • AWS SDK for PHP 的 3.45.2 版本或更高版本

  • AWS SDK for Python (Boto) 的 1.5.1 版本或更高版本

  • AWS SDK for Ruby 中的 aws-sdk-ses Gem 的 1.5.0 版本或更高版本

问题 13:我发送自定义验证电子邮件时,为什么会收到 ProductionAccessNotGranted 错误?

ProductionAccessNotGranted 错误表示您的账户仍在 Amazon SES 沙盒中。只有在您的账户已从沙盒中移出后,您才能发送自定义验证电子邮件。有关更多信息,请参阅申请生产访问权限(移出 Amazon SES 沙箱)