本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon SES 中的电子邮件格式
当客户端向 Amazon SES 提出请求时,Amazon SES 构建符合 Internet 邮件格式规范(RFC 5322
-
标头 – 包含路由说明和有关邮件的信息。例如,发件人的地址、收件人的地址、主题和日期。标头类似于普通信件顶部的信息,但前者可能包含许多其他类型的信息,如邮件的格式。
-
正文—包含邮件本身的文本。
-
信封 – 包含 SMTP 会话期间电子邮件客户端与邮件服务器之间通信的实际路由信息。此电子邮件信封信息类似于普通信件信封上的信息。电子邮件信封的路由信息通常与电子邮件标头中的路由信息相同,但也不总是相同。例如,当您发送密件抄送 (BCC) 时,实际收件人地址 (源自信封) 与收件人的电子邮件客户端中显示的“收件人”地址 (源自标头) 不相同。
以下是电子邮件的简单示例。标头后跟一个空白行,然后是电子邮件的正文。信封未显示,因为它是在 SMTP 会话期间在客户端与邮件服务器之间通信的,而不是电子邮件本身的一部分。
Received: from abc.smtp-out.amazonses.com (123.45.67.89) by in.example.com (87.65.43.210); Fri, 17 Dec 2010 14:26:22 From: "Andrew" <andrew@example.com>; To: "Bob" <bob@example.com> Date: Fri, 17 Dec 2010 14:26:21 -0800 Subject: Hello Message-ID: <61967230-7A45-4A9D-BEC9-87CBCF2211C9@example.com> Accept-Language: en-US Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Hello, I hope you are having a good day. -Andrew
以下部分回顾电子邮件标头和正文并确定您使用 Amazon SES 时需要提供的信息。
电子邮件标头
每封电子邮件都有一个标头。标头的每一行包含一个字段,后跟冒号,然后跟字段正文。当您在电子邮件客户端中阅读电子邮件时,电子邮件客户端通常会显示以下标头字段的值:
-
To—邮件收件人的电子邮件地址。
-
CC—邮件的抄送收件人的电子邮件地址。
-
From—发送电子邮件的电子邮件地址。
-
Subject—邮件主题的摘要。
-
Date—发送电子邮件的时间和日期。
有许多其他的提供路由信息和描述邮件内容的标头字段。电子邮件客户端通常不会向用户显示这些字段。有关 Amazon SES 接受的标头字段的完整列表,请参阅Amazon SES 标题字段。当您使用 Amazon SES 时,您特别需要了解“From”、“Reply-To”和“Return-Path”标头字段之间的差异。如前所述,“From”地址是邮件发件人的电子邮件地址,而“Reply-To”和“Return-Path”则如下所示:
-
Reply-To – 回复将发送到的电子邮件地址。默认情况下,回复将发送到原始发件人的电子邮件地址。
-
Return-Path – 退回邮件和投诉应发送到的电子邮件地址。“Return-Path”有时称为“envelope from”、“envelope sender”或“MAIL FROM”。
注意
当您使用 Amazon SES 时,我们建议您始终设置“Return-Path”参数,以便您可以在发生退回邮件时知道情况并采取纠正措施。
要轻松地将退回的邮件与其目标收件人进行匹配,您可以使用可变信封退回路径 (VERP)。利用 VERP,您为每个收件人设置不同的“Return-Path”,因此,如果有退回邮件,您会自动知道退回邮件的收件人,而不必打开退回邮件并进行分析。
电子邮件正文
电子邮件正文包含邮件的文本。正文可采用以下格式进行发送:
-
HTML—如果收件人的电子邮件客户端可解释 HTML,则正文可以包含格式化的文本和超链接
-
纯文本—如果收件人的电子邮件客户端是基于文本的,则正文不得包含任何不可打印的字符。
-
HTML 和纯文本—当您使用这两种格式在一封邮件中发送相同内容时,收件人的电子邮件客户端会基于其功能决定显示哪种格式。
如果您要向大量收件人发送一封电子邮件,合理的做法是同时采用 HTML 和文本进行发送。有些收件人拥有支持 HTML 的电子邮件客户端,因此他们可以单击邮件中的嵌式超链接。使用基于文本的电子邮件客户端的收件人将需要您包含他们可以复制并使用 Web 浏览器打开的 URL。
您需要向 Amazon SES 提供的电子邮件信息
当使用 Amazon SES 发送电子邮件时,您需要提供的电子邮件信息取决于您调用 Amazon SES 的方式。您可以提供最少量的信息并让 Amazon SES 为您处理所有格式设置。或者,如果您希望执行某些更高级的操作,如发送附件,则可以自行提供原始邮件。下面几节回顾使用 Amazon SES API、Amazon SES SMTP 接口或者 Amazon SES 控制台来发送电子邮件时需要提供的内容。
Amazon SES API
如果您直接调用 Amazon SES API,则可以调用 SendEmail
或 SendRawEmail
API。您需要提供的信息量取决于您调用的 API。
-
SendEmail API
要求您仅提供源地址、目标地址、邮件主题和邮件正文。您可以选择提供“Reply-To”地址。当您调用此 API 时,Amazon SES 会自动汇编一封格式正确的分为多个部分的多用途 Internet 邮件扩展(MIME)电子邮件,并针对电子邮件客户端软件的显示进行优化。有关更多信息,请参阅使用 Amazon 发送格式化的电子邮件 SES API。 -
SendRawEmail
API 为您提供了灵活性,允许您通过指定标头、MIME 部分和内容类型,设置自己的原始电子邮件的格式并发送这些邮件。SendRawEmail
通常由高级用户使用。您需要提供按照 Internet 邮件格式规范 (RFC 5322) 中的要求指定的邮件正文和所有标头字段。有关更多信息,请参阅使用 Amazon SES API v2 发送原始电子邮件。
如果您使用 AWS SDK 来调用 Amazon SES API,则要向相应函数提供以上列出的信息(例如,适用于 Java 的 SendEmail
和 SendRawEmail
)。
有关使用 Amazon SES API 来发送电子邮件的更多信息,请参阅使用 Amazon SES API 发送电子邮件。
Amazon SES SMTP 接口
当您通过 SMTP 接口访问 Amazon SES 时,您的 SMTP 客户端应用程序会汇编此邮件,因此您需要提供的信息取决于您所使用的应用程序。客户端与服务器之间的 SMTP 交换至少需要一个源地址、一个目标地址和邮件数据。
有关使用 Amazon SES SMTP 接口来发送电子邮件的更多信息,请参阅使用 Amazon SES SMTP 界面发送电子邮件。
Amazon SES 控制台
当您使用 Amazon SES 控制台来发送电子邮件时,您需要提供的信息量取决于您是选择发送已设置格式的电子邮件还是发送原始电子邮件。
-
要发送已设置格式的电子邮件,您需要提供源地址、目标地址、邮件主题和邮件正文。Amazon SES 会自动汇编一封格式正确的分为多个部分的 MIME 电子邮件,并针对电子邮件客户端软件的显示进行优化。您还可以指定 reply-to 和 return path 字段。
-
要发送原始电子邮件,您需要提供源地址、目标地址和邮件内容,其中必须包含按照 Internet 邮件格式规范 (RFC 5322
) 中的要求指定的邮件正文和所有标头字段。