

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

# Amazon SES 发布到 Amazon SNS 的事件数据的内容
<a name="event-publishing-retrieving-sns-contents"></a>

Amazon SES 以 JSON 格式将电子邮件发送事件记录发布到 Amazon Simple Notification Service。

您可以在 [Amazon SES 发布到 Amazon SNS 的事件数据示例](event-publishing-retrieving-sns-examples.md) 中找到所有这些通知类型的示例记录。

**Topics**
+ [Top-level JSON 对象](#event-publishing-retrieving-sns-contents-top-level-json-object)
+ [邮件对象](#event-publishing-retrieving-sns-contents-mail-object)
+ [退信对象](#event-publishing-retrieving-sns-contents-bounce-object)
+ [投诉对象](#event-publishing-retrieving-sns-contents-complaint-object)
+ [送达对象](#event-publishing-retrieving-sns-contents-delivery-object)
+ [发送对象](#event-publishing-retrieving-sns-contents-send-object)
+ [拒绝对象](#event-publishing-retrieving-sns-contents-reject-object)
+ [打开对象](#event-publishing-retrieving-sns-contents-open-object)
+ [单击对象](#event-publishing-retrieving-sns-contents-click-object)
+ [呈现失败对象](#event-publishing-retrieving-sns-contents-failure-object)
+ [DeliveryDelay 对象](#event-publishing-retrieving-sns-contents-delivery-delay-object)
+ [订阅对象](#event-publishing-retrieving-sns-contents-subscription-object)

## Top-level JSON 对象
<a name="event-publishing-retrieving-sns-contents-top-level-json-object"></a>

电子邮件发送事件记录中的顶级 JSON 对象包含以下字段。事件类型决定了存在哪些其他对象。


| 字段名称 | 说明 | 
| --- | --- | 
| `eventType` | 一个描述事件类型的文本字符串。可能的值：`Bounce`、`Complaint`、`Delivery`、`Send`、`Reject`、`Open`、`Click`、`Rendering Failure`、`DeliveryDelay` 或 `Subscription`。<br />如果尚未[设置事件发布](monitor-sending-using-event-publishing-setup.md)，则此字段将命名为 `notificationType`。 | 
| `mail` | JSON 对象，包含有关生成事件的电子邮件的信息。 | 
| `bounce` | 仅当 `eventType` 为 `Bounce` 时，此字段才存在。它包含有关退信的信息。 | 
| `complaint` | 仅当 `eventType` 为 `Complaint` 时，此字段才存在。它包含有关投诉的信息。 | 
| `delivery` | 仅当 `eventType` 为 `Delivery` 时，此字段才存在。它包含有关送达的信息。 | 
| `send` | 仅当 `eventType` 为 `Send` 时，此字段才存在。 | 
| `reject` | 仅当 `eventType` 为 `Reject` 时，此字段才存在。它包含有关拒绝的信息。 | 
| `open` | 仅当 `eventType` 为 `Open` 时，此字段才存在。它包含有关打开事件的信息。 | 
| `click` | 仅当 `eventType` 为 `Click` 时，此字段才存在。它包含有关点击事件的信息。 | 
| `failure` | 仅当 `eventType` 为 `Rendering Failure` 时，此字段才存在。它包含有关呈现失败事件的信息。 | 
| `deliveryDelay` | 仅当 `eventType` 为 `DeliveryDelay` 时，此字段才存在。它包含有关延迟送达电子邮件的信息。 | 
| `subscription` | 仅当 `eventType` 为 `Subscription` 时，此字段才存在。它包含有关订阅首选项的信息。 | 

## 邮件对象
<a name="event-publishing-retrieving-sns-contents-mail-object"></a>

每个电子邮件发送事件记录都包含有关 `mail` 对象中的原始电子邮件的信息。包含有关 `mail` 对象的信息的 JSON 对象具有以下字段。


| 字段名称 | 说明 | 
| --- | --- | 
| `timestamp` | 发送消息的日期和时间，*YYYY-MM-DDThh:mm:ss.sZ*采用 ISO8601 格式 ()。 | 
| `messageId` | Amazon SES 分配给电子邮件的唯一 ID。Amazon SES 在您发送邮件时已向您返回此值。 此邮件 ID 已由 Amazon SES 分配。您可以在 `mail` 对象的 `headers` 和 `commonHeaders` 字段中找到原始电子邮件的邮件 ID。  | 
| `source` | 发送邮件的电子邮件地址（信封 MAIL FROM 地址）。 | 
| `sourceArn` | 已用于发送电子邮件的身份的 Amazon Resource Name（ARN）。在发送授权的情况下，`sourceArn` 是身份拥有者授权委托发件人用于发送电子邮件的身份的 ARN。有关发送授权的更多信息，请参阅[电子邮件身份验证方法使用发送授权](sending-authorization.md)。 | 
| `sendingAccountId` | 用于发送电子邮件的账户的账户 ID。 AWS 在发送授权的情况下，`sendingAccountId` 是委托发件人的账户 ID。 | 
| `destination` | 作为原始邮件的收件人的电子邮件地址的列表。 | 
| `headersTruncated` | 一个字符串，指定标头是否会在通知中被截断，如果标头大于 10 KB，则会发生截断。可能的值为 `true` 和 `false`。 | 
| `headers` | 电子邮件的原始标头的列表。列表中的每个标头均有一个 `name` 字段和一个 `value` 字段。 `headers` 字段内的任何邮件 ID 均来自您传递至 Amazon SES 的原始邮件。Amazon SES 随后分配给电子邮件的邮件 ID 位于 `messageId` 对象的 `mail` 字段中。  | 
| `commonHeaders` | 电子邮件的原始常用标头的映射。 `commonHeaders` 字段中的任何邮件 ID 是 Amazon SES 随后在 `mail` 对象的 `messageId` 字段中分配给邮件的邮件 ID。  | 
| `tags` | 与电子邮件关联的标签的列表。 | 

## 退信对象
<a name="event-publishing-retrieving-sns-contents-bounce-object"></a>

包含有关 `Bounce` 事件的信息的 JSON 对象具有以下字段。


| 字段名称 | 说明 | 
| --- | --- | 
| `bounceType` | 退信的类型，由 Amazon SES 确定。 | 
| `bounceSubType` | 退信的子类型，由 Amazon SES 确定。 | 
| `bouncedRecipients` | 包含已退回的原始邮件收件人相关信息的列表。 | 
| `timestamp` | ISP 发送退回通知的日期和时间，采用 ISO8601 格式 (*YYYY-MM-DDThh:mm:ss.sZ*)。 | 
| `feedbackId` | 退信的唯一 ID。 | 
| `reportingMTA` | DSN 中的 `Reporting-MTA` 字段的值。这是尝试执行 DSN 所述的传输、中继或网关操作的 Message Transfer Authority（MTA）的值。 此字段仅在传输状态通知（DSN）附加到退信时显示。  | 

### 退信的收件人
<a name="event-publishing-retrieving-sns-contents-bounced-recipients"></a>

退信事件可能与一个收件人或多个收件人有关。`bouncedRecipients` 字段包含一系列对象（其电子邮件地址导致退信的每个收件人各有一个对象）并包含以下字段。


| 字段名称 | 说明 | 
| --- | --- | 
| `emailAddress` | 收件人的电子邮件地址。如果 DSN 可用，这将是 DSN 中的 `Final-Recipient` 字段的值。 | 

（可选）如果 DSN 已附加到退信，则以下字段也可能存在。


| 字段名称 | 说明 | 
| --- | --- | 
| `action` | DSN 中的 `Action` 字段的值。这表示报告 MTA 因尝试将邮件传输至此收件人而需执行的操作。 | 
| `status` | DSN 中的 `Status` 字段的值。这是每个收件人与传输无关的状态代码，用于指示邮件的传输状态。 | 
| `diagnosticCode` | 报告 MTA 发放的状态代码。这是 DSN 中的 `Diagnostic-Code` 字段的值。此字段可能不在 DSN 中（因此也不在 JSON 中）。 | 

### 退信类型
<a name="event-publishing-retrieving-sns-contents-bounce-types"></a>

每个退信事件都属于下表中所示的类型之一。

事件发布系统仅发布不再由 Amazon SES 重试的硬退信和软退信。收到标有 `Permanent` 的退信时，应从邮件列表中删除对应的电子邮件地址；您将来无法向这些地址发送邮件。当某封邮件被软退回若干次并且 Amazon SES 已停止尝试再次传送它之后，系统将向您发送 `Transient` 退信。您将来或许能够成功重新发送到最初导致了 `Transient` 退信的地址。


| bounceType | 反弹 SubType | 说明 | 
| --- | --- | --- | 
| `Undetermined` | `Undetermined` | Amazon SES 无法确定特定的退信原因。 | 
| `Permanent` | `General` | Amazon SES 收到了一封常规硬退信。如果您收到此类退信，您应从邮件列表中删除收件人的电子邮件地址。 | 
| `Permanent` | `NoEmail` | Amazon SES 收到永久硬退信，因为目标电子邮件地址不存在。如果您收到此类退信，您应从邮件列表中删除收件人的电子邮件地址。 | 
| `Permanent` | `Suppressed` | Amazon SES 已禁止发送邮件到此地址，因为该地址最近出现过做作为无效地址被退回的历史记录。要覆盖全局黑名单，请参阅 [使用 Amazon SES 账户级黑名单](sending-email-suppression-list.md)。 | 
| Permanent | OnAccountSuppressionList | Amazon SES 已禁止发送到此地址，因为该地址已被加入[账户级黑名单](sending-email-suppression-list.md)。这不计入您的跳出率指标。 | 
| Permanent | EmailValidationSuppressed | Amazon SES 已禁止向该地址发送邮件，因为该地址不符合您的[电子邮件验证设置](email-validation-auto.md)的阈值。 | 
| Permanent | OnTenantSuppressionList | Amazon SES 已禁止向该地址发送邮件，因为该地址在[租户级别](sending-email-suppression-list-tenant-level.md)的禁止列表中。这不计入您的跳出率指标。 | 
| `Transient` | `General` | Amazon SES 收到常规退信。将来，您也许能够向该收件人成功发送电子邮件。 | 
| `Transient` | `MailboxFull` | Amazon SES 收到邮箱完全退信。将来，您也许能够向该收件人成功发送电子邮件。 | 
| `Transient` | `MessageTooLarge` | Amazon SES 收到消息太大退信。如果您减小邮件的大小，则也许能够向该收件人成功发送电子邮件。 | 
| `Transient` | `CustomTimeoutExceeded` | Amazon SES 无法在电子邮件发件人指定的时间内成功传送电子邮件。*（退回消息将指定在定义的 TTL 内任何可能的传送尝试失败的原因。）*  | 
| `Transient` | `ContentRejected` | Amazon SES 收到内容拒绝退信。如果您更改邮件的内容，则也许能够向该收件人成功发送电子邮件。 | 
| `Transient` | `AttachmentRejected` | Amazon SES 收到附件拒绝退信。如果您删除或更改附件，则也许能够向该收件人成功发送电子邮件。 | 

## 投诉对象
<a name="event-publishing-retrieving-sns-contents-complaint-object"></a>

包含有关 `Complaint` 事件的信息的 JSON 对象具有以下字段。


| 字段名称 | 说明 | 
| --- | --- | 
| `complainedRecipients` | 包含可能已提交投诉的收件人的相关信息列表。 | 
| `timestamp` | ISP 发送投诉通知的日期和时间，采用 ISO8601 格式 (*YYYY-MM-DDThh:mm:ss.sZ*)。 | 
| `feedbackId` | 投诉的唯一 ID。 | 
| `complaintSubType` | 投诉的子类型，由 Amazon SES 确定。 | 

此外，如果反馈报告已附加到投诉，则以下字段也可能存在。


| 字段名称 | 说明 | 
| --- | --- | 
| `userAgent` | 反馈报告中的 `User-Agent` 字段的值。此值表示生成了报告的系统的名称和版本。 | 
| `complaintFeedbackType` | 从 ISP 收到的反馈报告中的 `Feedback-Type` 字段的值。此值包含反馈的类型。 | 
| `arrivalDate` | 反馈报告中`Arrival-Date`或`Received-Date`字段的值，采用 ISO8601 格式 (*YYYY-MM-DDThh:mm:ss.sZ*)。此字段可能不在报告中（因此也不在 JSON 中）。 | 

### 已投诉的收件人
<a name="event-publishing-retrieving-sns-contents-complained-recipients"></a>

`complainedRecipients` 字段包含可能已提交投诉的收件人的列表。

**重要**  
大多数 ISP 会编辑提交投诉的收件人的电子邮件地址。出于此原因，`complainedRecipients` 字段包含域中已向其发送电子邮件而该地址发布了投诉通知的所有人的列表。

此列表中的 JSON 对象包含以下字段。


| 字段名称 | 说明 | 
| --- | --- | 
| `emailAddress` | 收件人的电子邮件地址。 | 

### 投诉类型
<a name="event-publishing-retrieving-sns-contents-complaint-types"></a>

根据`complaintFeedbackType`互联网编号分配机构网站[，您可在由报告 ISP 分配的 ](https://www.iana.org/assignments/marf-parameters/marf-parameters.xml#marf-parameters-2) 字段中看到以下投诉类型：


| 字段名称 | 说明 | 
| --- | --- | 
| `abuse` | 指示未经请求的电子邮件或某种其他类型的电子邮件滥用。 | 
| `auth-failure` | 电子邮件身份验证失败报告。 | 
| `fraud` | 指示某种欺诈或网络钓鱼活动。 | 
| `not-spam` | 指示提供报告的实体不会将邮件视为垃圾邮件。这可用于更正被错误地标记或分类为垃圾邮件的邮件。 | 
| `other` | 指示不适合其他已注册类型的任何其他反馈。 | 
| `virus` | 报告在原始邮件中发现病毒。 | 

### 投诉子类型
<a name="event-publishing-retrieving-sns-contents-complaint-subtypes"></a>

`complaintSubType` 字段的值可以为 null 或 `OnAccountSuppressionList`。如果该值为 `OnAccountSuppressionList`，则表示 Amazon SES 已接受邮件，但未尝试发送邮件，因为该地址已被加入[账户级黑名单](sending-email-suppression-list.md)。`OnTenantSuppressionList`如果该地址在[租户级别的禁止](sending-email-suppression-list-tenant-level.md)列表中，则该值也可以为。

## 送达对象
<a name="event-publishing-retrieving-sns-contents-delivery-object"></a>

包含有关 `Delivery` 事件的信息的 JSON 对象具有以下字段。


| 字段名称 | 说明 | 
| --- | --- | 
| `timestamp` | Amazon SES 将电子邮件发送到收件人的邮件服务器的日期和时间，格式为 ISO8601 (*YYYY-MM-DDThh:mm:ss.sZ*)。 | 
| `processingTimeMillis` | 从 Amazon SES 接受来自发件人的请求到 Amazon SES 将邮件传递到收件人的邮件服务器的时间（以毫秒为单位）。 | 
| `recipients` | 传送事件应用于的预定收件人的列表。 | 
| `smtpResponse` | 从 Amazon SES 接受电子邮件的远程 ISP 的 SMTP 响应消息。此消息因电子邮件、接收邮件服务器以及接收 ISP 而异。 | 
| `reportingMTA` | 发送邮件的 Amazon SES 邮件服务器的主机名。 | 
| `remoteMtaIp` | Amazon SES 将电子邮件送达的 MTA 的 IP 地址。 | 

## 发送对象
<a name="event-publishing-retrieving-sns-contents-send-object"></a>

包含有关 `send` 事件的信息的 JSON 对象始终为空。

## 拒绝对象
<a name="event-publishing-retrieving-sns-contents-reject-object"></a>

包含有关 `Reject` 事件的信息的 JSON 对象具有以下字段。


| 字段名称 | 说明 | 
| --- | --- | 
| `reason` | 电子邮件被拒绝的原因。唯一可能的值为 `Bad content`，这意味着 Amazon SES 检测到该电子邮件含有病毒。当某个邮件被拒绝时，Amazon SES 会停止处理该邮件，并且不会尝试将邮件发送到收件人的邮件服务器。 | 

## 打开对象
<a name="event-publishing-retrieving-sns-contents-open-object"></a>

包含有关 `Open` 事件的信息的 JSON 对象具有以下字段。


| 字段名称 | 说明 | 
| --- | --- | 
| `ipAddress` | 收件人的 IP 地址。 | 
| `timestamp` | 打开事件发生的日期和时间采用 ISO8601 格式 (*YYYY-MM-DDThh:mm:ss.sZ*)。 | 
| `userAgent` | 收件人用于打开电子邮件中的设备或电子邮件客户端的用户代理。 | 

## 单击对象
<a name="event-publishing-retrieving-sns-contents-click-object"></a>

包含有关 `Click` 事件的信息的 JSON 对象具有以下字段。


| 字段名称 | 说明 | 
| --- | --- | 
| `ipAddress` | 收件人的 IP 地址。 | 
| `timestamp` | 点击事件发生的日期和时间，格式为 ISO8601 (*YYYY-MM-DDThh:mm:ss.sZ*)。 | 
| `userAgent` | 收件人单击电子邮件中链接时使用的客户端的用户代理。 | 
| `link` | 收件人点击的链接的 URL。 | 
| `linkTags` | 使用 `ses:tags` 属性添加到链接的标签的列表。有关向电子邮件中的链接添加标签的更多信息，请参阅 [Amazon SES 电子邮件发送指标 FAQs](faqs-metrics.md)中的[问题 5：我能否用唯一标识符来标记链接？](faqs-metrics.md#sending-metric-faqs-clicks-q5)。 | 

## 呈现失败对象
<a name="event-publishing-retrieving-sns-contents-failure-object"></a>

包含有关 `Rendering Failure` 事件的信息的 JSON 对象具有以下字段。


| 字段名称 | 说明 | 
| --- | --- | 
| `templateName` | 用于发送电子邮件的模板的名称。 | 
| `errorMessage` | 提供有关呈现失败详细信息的消息。 | 

## DeliveryDelay 对象
<a name="event-publishing-retrieving-sns-contents-delivery-delay-object"></a>

包含有关 `DeliveryDelay` 事件的信息的 JSON 对象具有以下字段。


| 字段名称 | 说明 | 
| --- | --- | 
| `delayType` | 延迟的类型。可能的值有：[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/ses/latest/dg/event-publishing-retrieving-sns-contents.html) | 
| `delayedRecipients` | 包含有关电子邮件收件人的信息的对象。 | 
| `expirationTime` | Amazon SES 将停止尝试传输邮件的日期和时间。此值以 ISO 8601 格式显示。 | 
| `reportingMTA` | 报告延迟的邮件传输代理（MTA）的 IP 地址。 | 
| `timestamp` | 发生延迟的日期和时间，以 ISO 8601 格式显示。 | 

### 延迟的收件人
<a name="event-publishing-retrieving-sns-contents-delivery-delay-object-recipients"></a>

`delayedRecipients` 对象包含以下值。


| 字段名称 | 说明 | 
| --- | --- | 
| `emailAddress` | 导致邮件送达延迟的电子邮件地址。 | 
| `status` | 与送达延迟关联的 SMTP 状态代码。 | 
| `diagnosticCode` | 接收邮件传输代理（MTA）提供的诊断代码。 | 

## 订阅对象
<a name="event-publishing-retrieving-sns-contents-subscription-object"></a>

包含有关 `Subscription` 事件的信息的 JSON 对象具有以下字段。


| 字段名称 | 说明 | 
| --- | --- | 
| `contactList` | 联系人所在的列表的名称。 | 
| `timestamp` | ISP 发送订阅通知的日期和时间，采用 ISO8601 格式 *(YYYY-MM-DDThh:mm:ss.sZ)*。 | 
| `source` | 发送邮件的电子邮件地址（信封 MAIL FROM 地址）。 | 
| `newTopicPreferences` | 一个 JSON 数据结构（映射），它指定联系人列表中所有主题的订阅状态，用于指示更改后的状态（联系人已订阅或已取消订阅）。 | 
| `oldTopicPreferences` | 一个 JSON 数据结构（映射），它指定联系人列表中所有主题的订阅状态，用于指示更改前的状态（联系人已订阅或已取消订阅）。 | 

### New/old 主题首选项
<a name="event-publishing-retrieving-sns-contents-subscription-object-topic-preferences"></a>

`newTopicPreferences` 和 `oldTopicPreferences` 对象包含以下值。


| 字段名称 | 说明 | 
| --- | --- | 
| `unsubscribeAll` | 指定联系人是否已取消订阅联系人列表中的所有主题。 | 
| `topicSubscriptionStatus` | 在 `topicName` 字段中指定主题的订阅状态，该字段指示该主题当前是否已订阅以接收来自 SES 的指定事件类型的通知。字段中可能的值为 **OptIn**（已订阅）或 **OptOut**（取消订阅）。`subscriptionStatus` | 
| `topicDefaultSubscriptionStatus` | 在 `topicName` 字段中指定主题的默认订阅状态，以确定默认情况下是订阅还是取消订阅添加到事件目标的新主题。字段中可能的值为 **OptIn**（默认情况下已订阅）或 **OptOut**（默认取消订阅）。`subscriptionStatus` | 