

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

# 为 Amazon SES 设置事件通知
<a name="monitor-sending-activity-using-notifications"></a>

要使用 Amazon SES 来发送电子邮件，必须有一个系统可用于管理退回邮件和投诉。Amazon SES 可通过以下三种方式通知退回邮件或投诉事件：发送通知电子邮件、通知 Amazon SNS 主题或发布发送事件。本节包含有关将 Amazon SES 设置为通过电子邮件或通过通知 Amazon SNS 主题来发送特定类型通知的信息。有关发布发送事件的更多信息，请参阅[使用 Amazon SES 事件发布监控电子邮件发送](monitor-using-event-publishing.md)。

可以使用 Amazon SES 控制台或 Amazon SES API 来设置通知。

**Topics**
+ [重要注意事项](#monitor-sending-activity-using-notifications-considerations)
+ [通过电子邮件接收 Amazon SES 通知](monitor-sending-activity-using-notifications-email.md)
+ [使用 Amazon SNS 接收 Amazon SES 通知](monitor-sending-activity-using-notifications-sns.md)

## 重要注意事项
<a name="monitor-sending-activity-using-notifications-considerations"></a>

设置 Amazon SES 发送通知时，有几点务必要注意：
+ 电子邮件和 Amazon SNS 通知适用于独立身份（用于发送电子邮件的已验证电子邮件地址或域）。当您为某一身份启用通知时，Amazon SES 仅针对从该身份发送的电子邮件发送通知，并且仅在您配置通知的 AWS 区域发送通知。
+ 必须启用一种接收退回邮件或投诉通知的方式。可以将通知发送到生成退回邮件或投诉的域或电子邮件地址，或者发送到 Amazon SNS 主题。还可以使用[事件发布](monitor-using-event-publishing.md)将有关各种不同类型事件（包括退回邮件、投诉、送达等）的通知发送到 Amazon SNS 主题或 Firehose 流。

  如果未设置任何一种接收退回邮件或投诉通知的方法，Amazon SES 会自动将退回邮件和投诉通知转发到出现退回邮件或投诉事件的电子邮件中的退回路径地址（或来源地址，如果未指定退回路径地址），即使禁用了电子邮件反馈转发也是如此。

  如果禁用电子邮件反馈转发并启用事件发布，则必须对发送的所有电子邮件应用包含事件发布规则的配置集。在此情况下，如果不使用配置集，Amazon SES 会将退回邮件和投诉通知转发到出现退回邮件或投诉事件的电子邮件中的退回路径或来源地址。
+ 如果将 Amazon SES 设置为使用多种方法（例如通过发送电子邮件通知和使用发送事件）发送退回邮件和投诉事件，那么可能收到有关同一事件的多个通知。

# 通过电子邮件接收 Amazon SES 通知
<a name="monitor-sending-activity-using-notifications-email"></a>

当您收到退回邮件和投诉时，Amazon SES 可以使用称为*电子邮件反馈转发*的流程为您发送电子邮件。

要使用 Amazon SES 来发送电子邮件，必须将它配置为使用以下方法之一发送退回邮件和投诉通知：
+ 启用电子邮件反馈转发。此节中包含此类通知的设置过程。
+ 将通知发送到 Amazon SNS 主题。有关更多信息，请参阅 [使用 Amazon SNS 接收 Amazon SES 通知](monitor-sending-activity-using-notifications-sns.md)。
+ 发布事件通知。有关更多信息，请参阅 [使用 Amazon SES 事件发布监控电子邮件发送](monitor-using-event-publishing.md)。

**重要**  
有关通知的若干要点，请参阅[为 Amazon SES 设置事件通知](monitor-sending-activity-using-notifications.md)。

**Topics**
+ [启用电子邮件反馈转发](#monitor-sending-activity-using-notifications-email-enabling)
+ [禁用电子邮件反馈转发](#monitor-sending-activity-using-notifications-email-disabling)
+ [电子邮件反馈转发目标](#monitor-sending-activity-using-notifications-email-destination)

## 启用电子邮件反馈转发
<a name="monitor-sending-activity-using-notifications-email-enabling"></a>

默认情况下会启用电子邮件反馈转发。如果您之前禁用了该功能，您可以使用本节中的以下步骤来启用它。

**使用 Amazon SES 控制台通过电子邮件启用退回邮件和投诉转发**

1. 登录 AWS 管理控制台 并打开 Amazon SES 控制台，网址为[https://console.aws.amazon.com/ses/](https://console.aws.amazon.com/ses/)。

1. 在导航窗格中的**配置**下，选择**已验证身份**。

1. 在经验证的电子邮件地址或域的列表中，选择要为其配置退回邮件和投诉通知的电子邮件地址或域。

1. 在详细信息窗格中，展开**通知**部分。

1. 选择 **Edit Configuration**。

1. 在 **Email Feedback Forwarding** 下，选择 **Enabled**。
**注意**  
在此页面上进行的更改可能需要几分钟才能生效。

您还可以使用 [ SetIdentityFeedbackForwardingEnabled](https://docs.aws.amazon.com/ses/latest/APIReference/API_SetIdentityFeedbackForwardingEnabled.html)API 操作通过电子邮件启用退回通知和投诉通知。

## 禁用电子邮件反馈转发
<a name="monitor-sending-activity-using-notifications-email-disabling"></a>

如果设置了其他提供退回邮件和投诉通知的方法，则可禁用电子邮件反馈转发，以便在退回邮件或投诉事件发生时，不会收到多个通知。

**使用 Amazon SES 控制台通过电子邮件禁用退回邮件和投诉转发**

1. 登录 AWS 管理控制台 并打开 Amazon SES 控制台，网址为[https://console.aws.amazon.com/ses/](https://console.aws.amazon.com/ses/)。

1. 在导航窗格中的**配置**下，选择**已验证身份**。

1. 在经验证的电子邮件地址或域的列表中，选择要为其配置退回邮件和投诉通知的电子邮件地址或域。

1. 在详细信息窗格中，展开**通知**部分。

1. 选择 **Edit Configuration**。

1. 在 **Email Feedback Forwarding** 下，选择 **Disabled**。
**注意**  
必须配置一种接收退回邮件和投诉通知的方法，才能通过 Amazon SES 发送电子邮件。如果禁用电子邮件反馈转发，则必须启用通过 Amazon SNS 发送通知，或者使用[事件发布](monitor-using-event-publishing.md)将退回邮件和投诉事件发送到 Amazon SNS 主题或 Firehose 流。如果使用事件发布，还必须对发送的每封电子邮件应用包含事件发布规则的配置集。如果未设置接收退回邮件和投诉通知的方法，Amazon SES 将自动通过电子邮件将反馈通知转发到 Return-Path (退回路径) 字段（或 Source (来源) 字段，如果未指定退回路径地址）中发生退回邮件或投诉事件的邮件的地址。在此情况下，即使禁用了电子邮件反馈通知，Amazon SES 也会转发退回邮件和投诉通知。

1. 保存您的通知配置，请选择 **Save Config**。
**注意**  
在此页面上进行的更改可能需要几分钟才能生效。

您还可以使用 [SetIdentityFeedbackForwardingEnabled](https://docs.aws.amazon.com/ses/latest/APIReference/API_SetIdentityFeedbackForwardingEnabled.html)API 操作禁用通过电子邮件发送的退信和投诉通知。

## 电子邮件反馈转发目标
<a name="monitor-sending-activity-using-notifications-email-destination"></a>

当您通过电子邮件接收通知时，Amazon SES 会重写 `From` 标头，并向您发送通知。Amazon SES 将通知转发到的地址取决于您发送原始邮件的方式。

如果您使用了 SMTP 接口发送邮件，则通知会根据以下规则传送：
+ 如果您在 `SMTP DATA` 部分指定了 `Return-Path` 标头，通知将发送至该地址。
+ 否则，通知将发送到您在发出 MAIL FROM 命令时指定的地址。

如果您是使用 `SendEmail` API 操作发送邮件的，则通知会根据以下规则传送：
+ 如果您向 `SendEmail` API 调用中指定了可选 `ReturnPath` 参数，则通知会发送至该地址。
+ 否则，通知将发送至 `Source` 的必需 `SendEmail` 参数中指定的地址。

如果您是使用 `SendRawEmail` API 操作发送邮件的，则通知会根据以下规则传送：
+ 如果您在原始邮件中指定了 `Return-Path` 标头，通知将发送至该地址。
+ 否则，如果您在对 `SendRawEmail` API 的调用中指定了 `Source` 参数，则通知会发送至该地址。
+ 不然，通知会发送至原始邮件 `From` 标头中的地址。

**注意**  
当您指定电子邮件中的 `Return-Path` 地址时，该地址会收到通知。但是，收件人收到的消息版本中包含 `Return-Path` 标头，其中包含一个匿名电子邮件地址（如 *a0b1c2d3e4f5a6b7-c8d9e0f1-a2b3-c4d5-e6f7-a8b9c0d1e2f3-000000@amazonses.com*）。无论您以何种方式发送电子邮件，该电子邮件地址均为匿名。

# 使用 Amazon SNS 接收 Amazon SES 通知
<a name="monitor-sending-activity-using-notifications-sns"></a>

可以将 Amazon SES 配置为在您收到退回邮件或投诉时或者传递电子邮件时通知 Amazon SNS 主题。Amazon SNS 通知采用[JavaScript 对象表示法 (JSON)](http://www.json.org) 格式，这使您能够以编程方式处理通知。

要使用 Amazon SES 来发送电子邮件，必须将它配置为使用以下方法之一发送退回邮件和投诉通知：
+ 将通知发送到 Amazon SNS 主题。此节中包含此类通知的设置过程。
+ 启用电子邮件反馈转发。有关更多信息，请参阅 [通过电子邮件接收 Amazon SES 通知](monitor-sending-activity-using-notifications-email.md)。
+ 发布事件通知。有关更多信息，请参阅 [使用 Amazon SES 事件发布监控电子邮件发送](monitor-using-event-publishing.md)。

**重要**  
有关通知的重要信息，请参阅[为 Amazon SES 设置事件通知](monitor-sending-activity-using-notifications.md)。

**Topics**
+ [为 Amazon SES 配置 Amazon SNS 通知](configure-sns-notifications.md)
+ [为 Amazon SES 配置 Amazon SNS 通知](notification-contents.md)
+ [Amazon SES 的 Amazon SNS 通知示例](notification-examples.md)

# 为 Amazon SES 配置 Amazon SNS 通知
<a name="configure-sns-notifications"></a>

Amazon SES 可以通过 [Amazon Simple Notification Service（Amazon SNS）](https://aws.amazon.com/sns)向您通知有关退回邮件、投诉和送达的情况。

您可以在 Amazon SES 控制台中或者使用 Amazon SES API 来配置通知。

**Topics**
+ [先决条件](#configure-feedback-notifications-prerequisites)
+ [使用 Amazon SES 控制台来配置通知](#configure-feedback-notifications-console)
+ [使用 Amazon SES API 来配置通知](#configure-feedback-notifications-api)
+ [反馈通知故障排除](#configure-feedback-notifications-troubleshooting)

## 先决条件
<a name="configure-feedback-notifications-prerequisites"></a>

在 Amazon SES 中设置 Amazon SNS 通知之前，请完成以下步骤：

1. 在 Amazon SNS 中创建主题。有关更多信息，请参阅《Amazon Simple Notification Service 开发人员指南》**中的[创建主题](https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html)。
**重要**  
当您使用 Amazon SNS 创建主题时，对于 **Type (类型)**，仅选择 **Standard (标准)**。（SES 不支持 FIFO 类型主题。）

   无论是创建新的 SNS 主题还是选择现有主题，都需要授予 SES 访问权限，才能向该主题发布通知。

   要授予 Amazon SES 发布主题通知的权限，请在 SNS 控制台的**编辑主题**屏幕上，展开**访问策略**，并在 **JSON 编辑器**中，添加以下权限策略：

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Id": "notification-policy",
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": "ses.amazonaws.com"
               },
               "Action": "sns:Publish",
               "Resource": "arn:aws:sns:us-east-1:111122223333:topic_name",
               "Condition": {
                   "StringEquals": {
                       "AWS:SourceAccount": "111122223333",
                       "AWS:SourceArn": "arn:aws:ses:topic_region:111122223333:identity/identity_name"
                   }
               }
           }
       ]
   }
   ```

------

   对前面的策略示例进行以下更改：
   + *topic\$1region*替换为您创建 SNS 主题的 AWS 区域。
   + 将 *111122223333* 替换为您的 AWS 账户 ID。
   + *topic\$1name*替换为您的 SNS 主题的名称。
   + *identity\$1name*替换为您订阅 SNS 主题的经过验证的身份（电子邮件地址或域名）。

1. 使用至少一个端点订阅主题。例如，如果您希望通过短信接收通知，则使用 SMS 端点（即，移动电话号码）订阅主题。要通过电子邮件接收通知，使用电子邮件端点（电子邮件地址）订阅主题。

   有关更多信息，请参阅《Amazon Simple Notification Service 开发人员指南》**中的[入门](https://docs.aws.amazon.com/sns/latest/dg/sns-getting-started.html)。

1. （可选）如果您的 Amazon SNS 主题使用 AWS Key Management Service (AWS KMS) 进行服务器端加密，则必须向密钥策略添加权限。 AWS KMS 您可以通过将以下策略附加到 AWS KMS 密钥策略来添加权限：

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "AllowSESToUseKMSKey",
               "Effect": "Allow",
               "Principal": {
                   "Service": "ses.amazonaws.com"
               },
               "Action": [
                   "kms:GenerateDataKey",
                   "kms:Decrypt"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

## 使用 Amazon SES 控制台来配置通知
<a name="configure-feedback-notifications-console"></a>

**使用 Amazon SES 控制台来配置通知**

1. 打开 Amazon SES 控制台，网址为[https://console.aws.amazon.com/ses/](https://console.aws.amazon.com/ses/)。

1. 在导航窗格中的**配置**下，选择**身份**。

1. 在 **Identities**（身份）容器中，选择您希望在从此身份发送的消息导致退回、投诉或送达时接收反馈通知的已验证身份。
**重要**  
经验证的域通知设置将应用于从该域中的电子邮件址（经验证的电子邮件地址*除外*）发送的所有邮件。

1. 在您选择的已验证身份的详细信息屏幕中，选择 **Notifications**（通知）选项卡，然后选择 **Feedback notifications**（反馈通知）容器中的 **Edit**（编辑）。

1. 展开要接收通知的每种反馈类型的 SNS 主题列表框，然后选择您拥有的 SNS 主题之一、**No SNS topic**（无 SNS 主题），或者 **SNS topic you don’t own**（你不拥有的 SNS 主题）。

   1. 如果您选择了 **SNS topic you don’t own**（您不拥有的 SNS 主题），**SNS topic ARN**（SNS 主题 ARN）将显示字段，您必须在其中输入委托发件人与您共享的 SNS 主题 ARN。（只有您的委托发件人才会收到这些通知，因为他们拥有 SNS 主题。要了解有关委托发送的更多信息，请参阅[发送授权概览](sending-authorization-overview.md)。）
**重要**  
您用于退货、投诉和送达通知的 Amazon SNS 主题必须与您使用 Amazon SES 时 AWS 区域 使用的主题相同。  
此外，您必须订阅主题的一个或多个端点才能接收通知。例如，如果您要将通知发送到电子邮件地址，则必须使用电子邮件端点订阅主题。有关更多信息，请参阅《Amazon Simple Notification Service 开发人员指南》**中的[入门](https://docs.aws.amazon.com/sns/latest/dg/sns-getting-started.html)。

1. （可选）如果您希望主题通知包括原始电子邮件中的标头，请选中 **Include original email headers**（包括原始电子邮件标头）框直接位于每种反馈类型的 SNS 主题名称下方。此选项仅在您已将 Amazon SNS 主题分配到关联的通知类型时可用。有关原始电子邮件标头的内容的信息，请参阅 [通知内容](notification-contents.md)中的 `mail` 对象。

1. 选择 **Save changes**（保存更改）。您对通知设置所做的更改可能需要几分钟才能生效。

1. （可选）如果您为退回邮件和投诉都选择 Amazon SNS 主题通知，则可以完全禁用电子邮件通知，以免通过电子邮件和 SNS 通知接收双重通知。要禁用退回邮件和投诉的电子邮件通知，请在 **Email Feedback Forwarding**（电子邮件反馈转发）容器中已验证身份的详细信息屏幕中的 **Notifications**（通知）选项卡下方选择 **Edit**（编辑）、取消勾选 **Enabled**（已启用）方框，然后选择 **Save changes**（保存更改）。

在配置您的设置之后，您将开始接收 Amazon SNS 主题的退回邮件、投诉和送达通知。这些通知采用 JavaScript对象表示法 (JSON) 格式，并遵循中描述的结构[通知内容](notification-contents.md)。

您将需要按标准 Amazon SNS 费率为退回邮件、投诉和送达通知付费。有关更多信息，请参阅 [Amazon SNS 定价页面](https://aws.amazon.com/sns/pricing)。

**注意**  
如果由于主题已被删除或您 AWS 账户 不再有权向该主题发布内容而尝试向该主题发布内容失败，Amazon SES 会删除该主题的配置，前提是该主题已配置为退回或投诉（不是传送——对于送达通知，SES 不会删除 SNS 主题配置设置）。此外，Amazon SES 还会为身份重新启用退回邮件和投诉电子邮件通知，并且您将通过电子邮件收到更改通知。如果将多个身份配置为使用该主题，则在每个身份无法发布到该主题时，更改每个身份的主题配置。

## 使用 Amazon SES API 来配置通知
<a name="configure-feedback-notifications-api"></a>

您也可以使用 Amazon SES API 来配置退回邮件、投诉和送达通知。使用以下操作来配置通知：
+ [SetIdentityNotificationTopic](https://docs.aws.amazon.com/ses/latest/APIReference/API_SetIdentityNotificationTopic.html)
+ [SetIdentityFeedbackForwardingEnabled](https://docs.aws.amazon.com/ses/latest/APIReference/API_SetIdentityFeedbackForwardingEnabled.html)
+ [GetIdentityNotificationAttributes](https://docs.aws.amazon.com/ses/latest/APIReference/API_GetIdentityNotificationAttributes.html)
+ [SetIdentityHeadersInNotificationsEnabled](https://docs.aws.amazon.com/ses/latest/APIReference/API_SetIdentityHeadersInNotificationsEnabled.html)

您可以使用这些 API 操作编写用于通知的自定义前端应用程序。有关与通知相关的 API 操作的完整描述，请参阅 [Amazon Simple Email Service API 参考](https://docs.aws.amazon.com/ses/latest/APIReference/)。

## 反馈通知故障排除
<a name="configure-feedback-notifications-troubleshooting"></a>

**未收到通知**  
如果您没有收到通知，请确保您已使用端点订阅发送通知的主题。当您使用电子邮件端点节点订阅主题时，您会收到一封电子邮件，要求您确认订阅。在开始接收电子邮件通知之前，您必须确认订阅。有关更多信息，请参阅《Amazon Simple Notification Service 开发人员指南》**中的[入门](https://docs.aws.amazon.com/sns/latest/dg/sns-getting-started.html)。

**`InvalidParameterValue`选择主题时的 错误**  
如果您收到表明发生 `InvalidParameterValue` 错误的错误消息，请检查 Amazon SNS 主题以查看它是否使用 AWS KMS进行了加密。如果是，则必须修改 AWS KMS 密钥的策略。请参阅 [先决条件](#configure-feedback-notifications-prerequisites) 以获取示例策略。

# 为 Amazon SES 配置 Amazon SNS 通知
<a name="notification-contents"></a>

退货、投诉和送达通知以 JavaScript 对象表示法 (JSON) 格式发布到[亚马逊简单通知服务 (Amazon SNS) Simple Notification S](https://aws.amazon.com/sns) ervice 主题。顶级 JSON 对象包含一个 `notificationType` 字符串，一个 `mail` 对象，以及一个 `bounce` 对象、`complaint` 对象或 `delivery` 对象。

有关不同类型对象的描述，请参阅以下部分：
+ [顶级 JSON 对象](#top-level-json-object)
+ [`mail` 对象](#mail-object)
+ [`bounce` 对象](#bounce-object)
+ [`complaint` 对象](#complaint-object)
+ [`delivery` 对象](#delivery-object)

以下是有关 Amazon SES 的 Amazon SNS 通知内容的一些重要说明：
+ 对于给定的通知类型，您可能会收到针对多个收件人的 Amazon SNS 通知，或者可能会收到针对每个收件人的 Amazon SNS 通知。您的代码应能够解析 Amazon SNS 通知并处理这两种情况；SES 不保证对通过 Amazon SNS 发送的通知进行排序或批处理。但是，不同的 Amazon SNS 通知类型（例如，退回邮件和投诉）不会合并为一个通知。
+ 您可能会针对一个收件人收到多个类型的 Amazon SNS 通知。例如，接收邮件服务器可能接受电子邮件（触发送达通知），但在处理电子邮件后，接收邮件服务器可能会确定该电子邮件实际导致了退回邮件（触发退回邮件通知）。不过，这些通知始终单独发送，因为它们属于不同的类型。
+ SES 保留在通知中添加其他字段的权利。同样地，解析这些通知的应用程序必须足够灵活以处理未知字段。
+ SES 在发送电子邮件时会覆盖邮件标头。您可以通过 `mail` 对象的 `headers` 和 `commonHeaders` 字段检索原始邮件的标头。

## 顶级 JSON 对象
<a name="top-level-json-object"></a>

SES 通知中的顶级 JSON 对象包含以下字段。


| 字段名称 | 说明 | 
| --- | --- | 
| notificationType |  一个字符串，包含由 JSON 对象表示的通知类型。可能的值为 `Bounce`、`Complaint` 或 `Delivery`。 如果你[设置事件发布](monitor-sending-using-event-publishing-setup.md)，此字段命名为 `eventType`。  | 
| mail |  一个 JSON 对象，包含有关通知所属的原始邮件的信息。有关更多信息，请参阅 [邮件对象](#mail-object)。  | 
| bounce |  此字段仅在 `notificationType` 为 `Bounce`，且包含的 JSON 对象保存有关退回邮件的信息时显示。有关更多信息，请参阅 [退回邮件对象](#bounce-object)。  | 
| complaint |  此字段仅在 `notificationType` 为 `Complaint`，且包含的 JSON 对象保存有关投诉的信息时显示。有关更多信息，请参阅 [投诉对象](#complaint-object)。  | 
| delivery |  此字段仅在 `notificationType` 为 `Delivery`，且包含的 JSON 对象保存有关送达的信息时显示。有关更多信息，请参阅 [送达对象](#delivery-object)。  | 

## 邮件对象
<a name="mail-object"></a>

每个退回邮件、投诉或送达通知均在 `mail` 对象中包含有关原始电子邮件的信息。包含有关 `mail` 对象的信息的 JSON 对象具有以下字段。


| 字段名称 | 说明 | 
| --- | --- | 
|  timestamp  |  原始消息的发送时间（ ISO8601格式）。  | 
|  messageId  |  SES 分配给电子邮件的唯一 ID。SES 在您发送邮件时已向您返回此值。  此邮件 ID 已由 SES 分配。您可以在 `mail` 对象的 `headers` 字段中找到原始电子邮件的邮件 ID。   | 
|  source  |  发送原始电子邮件的电子邮件地址（信封 MAIL FROM 地址）。  | 
|  sourceArn  |  已用于发送电子邮件的身份的 Amazon Resource Name（ARN）。在发送授权的情况下，`sourceArn` 是身份拥有者授权委托发件人用于发送电子邮件的身份的 ARN。有关发送授权的更多信息，请参阅[电子邮件身份验证方法使用发送授权](sending-authorization.md)。  | 
|  sourceIp  |  已执行到 SES 的电子邮件发送请求的客户端的原始公有 IP 地址。  | 
|  sendingAccountId  |  用于发送电子邮件的账户的 AWS 账户 ID。在发送授权的情况下，`sendingAccountId` 是委托发件人的账户 ID。  | 
|  callerIdentity  |  发送电子邮件的 SES 用户的 IAM 身份。  | 
|  destination  |  作为原始邮件的收件人的电子邮件地址的列表。  | 
|  headersTruncated  |  仅当您将通知设置配置为包括原始电子邮件中的标头时，此对象才存在。 指示通知中的标头是否截断。当原始邮件中的标头大小为 10 KB 或更大时，SES 会在截断通知中的标头。可能的值为 `true` 和 `false`。  | 
|  headers  |  仅当您将通知设置配置为包括原始电子邮件中的标头时，此对象才存在。 电子邮件的原始标头的列表。列表中的每个标头均有一个 `name` 字段和一个 `value` 字段。  `headers` 对象内的任何邮件 ID 均来自您传递至 SES 的原始邮件。SES 随后分配给电子邮件的邮件 ID 位于 `messageId` 对象的 `mail` 字段中。   | 
|  commonHeaders  |  仅当您将通知设置配置为包括原始电子邮件中的标头时，此对象才存在。 包括有关原始电子邮件中的常用电子邮件标头的信息，包括“发件人”、“收件人”和“主题”字段。在此对象中，每个标头是一个键。“发件人”和“收件人”字段由可包含多个值的数组表示。  对于事件，`commonHeaders` 字段中的任何邮件 ID 是 Amazon SES 随后在邮件对象的 `messageId` 字段中分配给邮件的邮件 ID。通知将包含原始电子邮件的邮件 ID。   | 

下面是包含原始电子邮件标头的 `mail` 对象的示例。当此通知类型未配置为包含原始电子邮件标头时，`mail` 对象不会包含 `headersTruncated`、`headers` 和 `commonHeaders` 字段。

```
{
   "timestamp":"2018-10-08T14:05:45 +0000",
   "messageId":"000001378603177f-7a5433e7-8edb-42ae-af10-f0181f34d6ee-000000",
   "source":"sender@example.com",
   "sourceArn": "arn:aws:ses:us-east-1:888888888888:identity/example.com",
   "sourceIp": "127.0.3.0",
   "sendingAccountId":"123456789012",
   "destination":[
      "recipient@example.com"
   ],
   "headersTruncated":false,
   "headers":[ 
      { 
         "name":"From",
         "value":"\"Sender Name\" <sender@example.com>"
      },
      { 
         "name":"To",
         "value":"\"Recipient Name\" <recipient@example.com>"
      },
      { 
         "name":"Message-ID",
         "value":"custom-message-ID"
      },
      { 
         "name":"Subject",
         "value":"Hello"
      },
      { 
         "name":"Content-Type",
         "value":"text/plain; charset=\"UTF-8\""
      },
      { 
         "name":"Content-Transfer-Encoding",
         "value":"base64"
      },
      { 
         "name":"Date",
         "value":"Mon, 08 Oct 2018 14:05:45 +0000"
      }
   ],
   "commonHeaders":{ 
      "from":[ 
         "Sender Name <sender@example.com>"
      ],
      "date":"Mon, 08 Oct 2018 14:05:45 +0000",
      "to":[ 
         "Recipient Name <recipient@example.com>"
      ],
      "messageId":" custom-message-ID",
      "subject":"Message sent using SES"
   }
}
```

## 退回邮件对象
<a name="bounce-object"></a>

包含有关退回邮件的信息的 JSON 对象具有以下字段。


| 字段名称 | 说明 | 
| --- | --- | 
|  bounceType  |  退回邮件的类型 (由 SES 确定)。有关更多信息，请参阅 [退信类型](#bounce-types)。  | 
|  bounceSubType  |  退回邮件的子类型 (由 SES 确定)。有关更多信息，请参阅 [退信类型](#bounce-types)。  | 
|  bouncedRecipients  |  包含已退回的原始邮件收件人相关信息的列表。有关更多信息，请参阅 [退信的收件人](#bounced-recipients)。  | 
|  timestamp  |  发送退件的日期和时间（ ISO8601格式）。请注意，这是 ISP 发送通知的时间，而不是 SES 接收通知的时间。  | 
|  feedbackId  |  退信的唯一 ID。  | 

如果 SES 已能够联系远程 Message Transfer Authority（MTA），则以下字段也将存在。


| 字段名称 | 说明 | 
| --- | --- | 
|  remoteMtaIp  |  SES 尝试将电子邮件传输到的 MTA 的 IP 地址。  | 

如果退回邮件已附加传输状态通知（DSN），则以下字段也可能存在。


| 字段名称 | 说明 | 
| --- | --- | 
|  reportingMTA  |  DSN 中的 `Reporting-MTA` 字段的值。这是尝试执行 DSN 所述的传输、中继或网关操作的 MTA 的值。  | 

以下是 `bounce` 对象的示例。

```
{
   "bounceType":"Permanent",
   "bounceSubType": "General",
   "bouncedRecipients":[
      {
         "status":"5.0.0",
         "action":"failed",
         "diagnosticCode":"smtp; 550 user unknown",
         "emailAddress":"recipient1@example.com"
      },
      {
         "status":"4.0.0",
         "action":"delayed",
         "emailAddress":"recipient2@example.com"
      }
   ],
   "reportingMTA": "example.com",
   "timestamp":"2012-05-25T14:59:38.605Z",
   "feedbackId":"000001378603176d-5a4b5ad9-6f30-4198-a8c3-b1eb0c270a1d-000000",
   "remoteMtaIp":"127.0.2.0"
}
```

### 退信的收件人
<a name="bounced-recipients"></a>

退回邮件通知可能与一个或多个收件人有关。`bouncedRecipients` 字段包含对象列表（与退回邮件通知相关的每个收件人均有一个对象）而且始终包含以下字段。


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

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


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

以下是可能位于 `bouncedRecipients` 列表中的对象的示例。

```
{
    "emailAddress": "recipient@example.com",
    "action": "failed",
    "status": "5.0.0",
    "diagnosticCode": "X-Postfix; unknown user"
}
```

### 退信类型
<a name="bounce-types"></a>

退回对象包含 `Undetermined`、`Permanent`*（硬）*或 `Transient`*（软）*的退回类型。`Permanent`*（硬）*和 `Transient`*（软）*退回类型也可以包含几种退回子类型之一。

当您收到退回邮件类型为 `Transient`*（软）*的退回邮件通知时，如果解决了导致退回邮件的问题，您也许可在以后将邮件发送给该收件人。

当您收到退回类型为 `Permanent`*（硬）*的退回通知时，您将来不太可能能够向该收件人发送电子邮件。因此，您应该立即从邮件列表中删除其地址造成了退回邮件的收件人。

**注意**  
出现*软退信* (与临时问题相关的退回邮件，例如收件人的收件箱已满) 时，SES 尝试在一定时间之后传送该电子邮件。在该段时间结束时，如果 SES 仍无法传送电子邮件，则会停止尝试。  
SES 为硬退信以及停止尝试传送的软退信提供通知。如果您希望在每次发生软退信时收到通知，请[启用事件推送](monitor-sending-using-event-publishing-setup.md)并将其配置为出现送达延迟事件时发送通知。


| bounceType | bounceSubType | 说明 | 
| --- | --- | --- | 
|  Undetermined  |  Undetermined  |  收件人的电子邮件提供商发送退回邮件消息。退回邮件中未包含足够的消息供 SES 确定退回邮件的原因。退回邮件电子邮件（发送到电子邮件的 Return-Path 标头中地址）可能包含有关导致电子邮件退回的问题的其他信息。  | 
|  Permanent  |  General  |  收件人的电子邮件提供商发送了硬退信。  收到此类退回邮件通知时，您应立即从邮件列表中删除该收件人的电子邮件地址。将邮件发送到造成硬退回邮件的地址会对您作为发件人的声誉造成负面影响。如果您继续将电子邮件发送到造成硬退回邮件的地址，我们可能会暂停您发送更多电子邮件的功能。请参阅[使用 Amazon SES 账户级黑名单](sending-email-suppression-list.md)。   | 
|  Permanent  |  NoEmail  |  无法从退回邮件中检索收件人的电子邮件地址。  | 
|  Permanent  |  Suppressed  |  由于收件人的电子邮件地址近期有造成硬退信的历史记录，因此该地址已进入 SES 黑名单。要覆盖全局黑名单，请参阅 [使用 Amazon SES 账户级黑名单](sending-email-suppression-list.md)。  | 
|  Permanent  |  OnAccountSuppressionList  | SES 已禁止发送到此地址，因为该地址已被加入[账户级黑名单](sending-email-suppression-list.md)。这不计入您的跳出率指标。  | 
|  Permanent  |  UnsubscribedRecipient  | 当收件人联系人已从主题退订并使用[列表管理选项](sending-email-list-management.md#configuring-list-management-list-contacts)向他们发送邮件时，会发生此退回类型。SES 尊重联系人偏好，并不尝试投递。此外，此退回不会影响发件人声誉，因为未尝试投递，并且收件人联系人也不会因退回而被添加到黑名单。  建议您订阅 UnsubscribedRecipient 事件，以免继续向未订阅的收件人发送活动。考虑一下 [使用列表管理](sending-email-list-management.md)。列表管理应该是您订阅用户列表的真实来源。从 SES 执行的角度来看，如果您继续向被禁用或已退订的收件人发送邮件，您将拥有不遵守电子邮件发送最佳实践的声誉。   | 
|  Transient  |  General  |  收件人的电子邮件提供商发送一般退回邮件消息。如果解决了导致邮件退回邮件的问题，您也许可在以后将邮件发送给相同的收件人。  如果您将电子邮件发送到激活了自动回复规则（例如“外出”邮件） 的收件人，则可能收到这种类型的通知。即使回复中具有 `Bounce` 类型的通知，SES 在计算账户的邮件退回率时，不会计入自动回复。   | 
|  Transient  |  MailboxFull  |  由于收件人的收件箱已满，收件人的电子邮件提供商发送退回邮件。以后当收件人的邮箱有空闲空间时，您可能可以向相同的收件人发送电子邮件。  | 
|  Transient  |  MessageTooLarge  |  由于您发送的邮件太大，收件人的电子邮件提供商发送退回邮件。如果您减小邮件的大小，则也许能够向相同的收件人发送邮件。  | 
|  Transient  |  ContentRejected  |  由于您发送的内容包含收件人电子邮件提供商不允许的内容，该提供商发送了退回邮件。如果您更改邮件的内容，则也许能够向相同的收件人发送电子邮件。  | 
|  Transient  |  AttachmentRejected  |  由于邮件包含不可接受的附件，收件人的电子邮件提供商发送了退回邮件。例如，一些电子邮件提供商可能会拒绝具有特定文件类型附件的电子邮件，或者具有超大附件的电子邮件。如果您删除附件或更改其内容，则也许能够向相同的收件人发送电子邮件。  | 

## 投诉对象
<a name="complaint-object"></a>

包含有关投诉的信息的 JSON 对象具有以下字段。


| 字段名称 | 说明 | 
| --- | --- | 
|  complainedRecipients  |  包含提起投诉的收件人相关信息的列表。有关更多信息，请参阅 [已投诉的收件人](#complained-recipients)。  | 
|  timestamp  |  ISP 发送投诉通知时的日期和时间，采用 ISO8601 格式。此字段中的日期和时间可能与 SES 收到通知时的日期和时间不同。  | 
|  feedbackId  |  与投诉关联的唯一 ID。  | 
|  complaintSubType  | `complaintSubType` 字段的值可以为 null 或 `OnAccountSuppressionList`。如果该值为 `OnAccountSuppressionList`，则表示 SES 已接受邮件，但未尝试发送邮件，因为该地址已被加入[账户级黑名单](sending-email-suppression-list.md)。 | 

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


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

以下是 `complaint` 对象的示例。

```
{
   "userAgent":"ExampleCorp Feedback Loop (V0.01)",
   "complainedRecipients":[
      {
         "emailAddress":"recipient1@example.com"
      }
   ],
   "complaintFeedbackType":"abuse",
   "arrivalDate":"2009-12-03T04:24:21.000-05:00",
   "timestamp":"2012-05-25T14:59:38.623Z",
   "feedbackId":"000001378603177f-18c07c78-fa81-4a58-9dd1-fedc3cb8f49a-000000"
}
```

### 已投诉的收件人
<a name="complained-recipients"></a>

`complainedRecipients` 字段包含可能已提交投诉的收件人的列表。您应使用此信息来确定哪位收件人提交了投诉，然后立即从您的邮件列表中删除该收件人。

**重要**  
大多数人会从投诉通知中 ISPs 删除提交投诉的收件人的电子邮件地址。因此，此列表包含可能发送了投诉的收件人的信息，这基于原始邮件的收件人以及我们收到投诉的 ISP。SES 对原始邮件执行查找以确定此收件人列表。

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


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

以下是已投诉收件人对象的示例。

```
{ "emailAddress": "recipient1@example.com" }
```

**注意**  
由于此行为，如果限制为向每个收件人发送一封电子邮件（而不是向“密件抄送”行中的 30 个不同的电子邮件地址发送同一封电子邮件），您可以更加确定地知道哪个地址投诉了您的邮件。

#### 投诉类型
<a name="complaint-types"></a>

根据`complaintFeedbackType`互联网编号分配机构网站[，您可在由报告 ISP 分配的 ](http://www.iana.org/assignments/marf-parameters/marf-parameters.xml#marf-parameters-2) 字段中看到以下投诉类型：
+ `abuse`：指示不请自来的电子邮件或某种其他类型的垃圾邮件。
+ `auth-failure`：电子邮件身份验证失败报告。
+ `fraud`：指示某种欺诈或网络钓鱼活动。
+ `not-spam`：指示提供报告的实体不将邮件视为垃圾邮件。这可用于更正被错误地标记或分类为垃圾邮件的邮件。
+ `other`：指示不适合其他已注册类型的任何其他反馈。
+ `virus`：报告在原始邮件中发现病毒。

## 送达对象
<a name="delivery-object"></a>

包含送达情况相关信息的 JSON 对象始终具有以下字段。


| 字段名称 | 说明 | 
| --- | --- | 
|  timestamp  |  SES 将电子邮件发送到收件人的邮件服务器的时间（ ISO8601 格式）。  | 
|  processingTimeMillis  |  SES 接受来自发件人的请求与将邮件传递到收件人的邮件服务器之间的时间 (以毫秒为单位)。  | 
|  recipients  |  电子邮件送达通知适用的目标收件人的列表。  | 
|  smtpResponse  |  从 SES 接受电子邮件的远程 ISP 的 SMTP 响应消息。此消息因电子邮件、接收邮件服务器以及接收 ISP 而异。  | 
|  reportingMTA  |  发送邮件的 SES 邮件服务器的主机名。  | 
|  remoteMtaIp  |  SES 送达电子邮件的 MTA 的 IP 地址。  | 

以下是 `delivery` 对象的示例。

```
{
   "timestamp":"2014-05-28T22:41:01.184Z",
   "processingTimeMillis":546,
   "recipients":["success@simulator.amazonses.com"],
   "smtpResponse":"250 ok:  Message 64111812 accepted",
   "reportingMTA":"a8-70.smtp-out.amazonses.com",
   "remoteMtaIp":"127.0.2.0"
}
```

# Amazon SES 的 Amazon SNS 通知示例
<a name="notification-examples"></a>

以下各节提供了三种类型的通知的示例：
+ 有关退回邮件通知示例，请参阅 [Amazon SNS 退回邮件通知示例](#notification-examples-bounce)。
+ 有关投诉通知示例，请参阅 [Amazon SNS 投诉通知示例](#notification-examples-complaint)。
+ 有关送达通知示例，请参阅 [Amazon SNS 送达通知示例](#notification-examples-delivery)。

## Amazon SNS 退回邮件通知示例
<a name="notification-examples-bounce"></a>

本节包含退回邮件通知的示例，这些通知带有和不带由发送反馈的电子邮件接收方提供的传输状态通知（DSN）。

### 带 DSN 的退回邮件通知
<a name="notification-examples-bounce-with-dsn"></a>

下面是一个包含 DSN 和原始电子邮件标头的退回邮件通知的示例。当退回邮件通知未配置为包含原始电子邮件标头时，这些通知内的 `mail` 对象不会包含 `headersTruncated`、`headers` 和 `commonHeaders` 字段。

```
   {
       "notificationType":"Bounce",
       "bounce":{
          "bounceType":"Permanent",
          "reportingMTA":"dns; email.example.com",
          "bouncedRecipients":[
             {
                "emailAddress":"jane@example.com",
                "status":"5.1.1",
                "action":"failed",
                "diagnosticCode":"smtp; 550 5.1.1 <jane@example.com>... User"
             }
          ],
          "bounceSubType":"General",
          "timestamp":"2016-01-27T14:59:38.237Z",
          "feedbackId":"00000138111222aa-33322211-cccc-cccc-cccc-ddddaaaa068a-000000",
          "remoteMtaIp":"127.0.2.0"
       },
       "mail":{
          "timestamp":"2016-01-27T14:59:38.237Z",
          "source":"john@example.com",
          "sourceArn": "arn:aws:ses:us-east-1:888888888888:identity/example.com",
          "sourceIp": "127.0.3.0",
          "sendingAccountId":"123456789012",
          "callerIdentity": "IAM_user_or_role_name",
          "messageId":"00000138111222aa-33322211-cccc-cccc-cccc-ddddaaaa0680-000000",
          "destination":[
            "jane@example.com",
            "mary@example.com",
            "richard@example.com"],
          "headersTruncated":false,
          "headers":[ 
           { 
             "name":"From",
             "value":"\"John Doe\" <john@example.com>"
           },
           { 
             "name":"To",
             "value":"\"Jane Doe\" <jane@example.com>, \"Mary Doe\" <mary@example.com>, \"Richard Doe\" <richard@example.com>"
           },
           { 
             "name":"Message-ID",
             "value":"custom-message-ID"
           },
           { 
             "name":"Subject",
             "value":"Hello"
           },
           { 
             "name":"Content-Type",
             "value":"text/plain; charset=\"UTF-8\""
           },
           { 
             "name":"Content-Transfer-Encoding",
             "value":"base64"
           },
           { 
             "name":"Date",
             "value":"Wed, 27 Jan 2016 14:05:45 +0000"
           }
          ],
          "commonHeaders":{ 
             "from":[ 
                "John Doe <john@example.com>"
             ],
             "date":"Wed, 27 Jan 2016 14:05:45 +0000",
             "to":[ 
                "Jane Doe <jane@example.com>, Mary Doe <mary@example.com>, Richard Doe <richard@example.com>"
             ],
             "messageId":"custom-message-ID",
             "subject":"Hello"
           }
        }
    }
```

### 不带 DSN 的退回邮件通知
<a name="notification-examples-bounce-no-dsn"></a>

下面是一个包含原始电子邮件标头但不包含 DSN 的退回邮件通知的示例。当退回邮件通知未配置为包含原始电子邮件标头时，这些通知内的 `mail` 对象不会包含 `headersTruncated`、`headers` 和 `commonHeaders` 字段。

```
   {
      "notificationType":"Bounce",
      "bounce":{
         "bounceType":"Permanent",
         "bounceSubType": "General",
         "bouncedRecipients":[
            {
               "emailAddress":"jane@example.com"
            },
            {
               "emailAddress":"richard@example.com"
            }
         ],
         "timestamp":"2016-01-27T14:59:38.237Z",
         "feedbackId":"00000137860315fd-869464a4-8680-4114-98d3-716fe35851f9-000000",
         "remoteMtaIp":"127.0.2.0"
      },
      "mail":{
         "timestamp":"2016-01-27T14:59:38.237Z",
         "messageId":"00000137860315fd-34208509-5b74-41f3-95c5-22c1edc3c924-000000",
         "source":"john@example.com",
         "sourceArn": "arn:aws:ses:us-east-1:888888888888:identity/example.com",
         "sourceIp": "127.0.3.0",
         "sendingAccountId":"123456789012",
         "callerIdentity": "IAM_user_or_role_name",
         "destination":[
            "jane@example.com",
            "mary@example.com",
            "richard@example.com"
         ],
        "headersTruncated":false,
        "headers":[ 
         { 
            "name":"From",
            "value":"\"John Doe\" <john@example.com>"
         },
         { 
            "name":"To",
            "value":"\"Jane Doe\" <jane@example.com>, \"Mary Doe\" <mary@example.com>, \"Richard Doe\" <richard@example.com>"
         },
         { 
            "name":"Message-ID",
            "value":"custom-message-ID"
         },
         { 
            "name":"Subject",
            "value":"Hello"
         },
         { 
            "name":"Content-Type",
            "value":"text/plain; charset=\"UTF-8\""
         },
         { 
            "name":"Content-Transfer-Encoding",
            "value":"base64"
         },
         { 
            "name":"Date",
            "value":"Wed, 27 Jan 2016 14:05:45 +0000"
          }
         ],
         "commonHeaders":{ 
           "from":[ 
              "John Doe <john@example.com>"
           ],
           "date":"Wed, 27 Jan 2016 14:05:45 +0000",
           "to":[ 
              "Jane Doe <jane@example.com>, Mary Doe <mary@example.com>, Richard Doe <richard@example.com>"
           ],
           "messageId":"custom-message-ID",
           "subject":"Hello"
         }
      }
  }
```

## Amazon SNS 投诉通知示例
<a name="notification-examples-complaint"></a>

本节包含投诉通知的示例，这些通知带有和不带由发送反馈的电子邮件接收方提供的反馈报告。

### 带反馈报告的投诉通知
<a name="notification-examples-complaint-with-feedback"></a>

下面是一个包含反馈报告和原始电子邮件标头的投诉通知的示例。当投诉通知未配置为包含原始电子邮件标头时，这些通知内的 `mail` 对象不会包含 `headersTruncated`、`headers` 和 `commonHeaders` 字段。

```
   {
      "notificationType":"Complaint",
      "complaint":{
         "userAgent":"AnyCompany Feedback Loop (V0.01)",
         "complainedRecipients":[
            {
               "emailAddress":"richard@example.com"
            }
         ],
         "complaintFeedbackType":"abuse",
         "arrivalDate":"2016-01-27T14:59:38.237Z",
         "timestamp":"2016-01-27T14:59:38.237Z",
         "feedbackId":"000001378603177f-18c07c78-fa81-4a58-9dd1-fedc3cb8f49a-000000"
      },
      "mail":{
         "timestamp":"2016-01-27T14:59:38.237Z",
         "messageId":"000001378603177f-7a5433e7-8edb-42ae-af10-f0181f34d6ee-000000",
         "source":"john@example.com",
         "sourceArn": "arn:aws:ses:us-east-1:888888888888:identity/example.com",
         "sourceIp": "127.0.3.0",
         "sendingAccountId":"123456789012",
         "callerIdentity": "IAM_user_or_role_name",
         "destination":[
            "jane@example.com",
            "mary@example.com",
            "richard@example.com"
         ], 
          "headersTruncated":false,
          "headers":[ 
           { 
             "name":"From",
             "value":"\"John Doe\" <john@example.com>"
           },
           { 
             "name":"To",
             "value":"\"Jane Doe\" <jane@example.com>, \"Mary Doe\" <mary@example.com>, \"Richard Doe\" <richard@example.com>"
           },
           { 
             "name":"Message-ID",
             "value":"custom-message-ID"
           },
           { 
             "name":"Subject",
             "value":"Hello"
           },
           { 
             "name":"Content-Type",
             "value":"text/plain; charset=\"UTF-8\""
           },
           { 
             "name":"Content-Transfer-Encoding",
             "value":"base64"
           },
           { 
             "name":"Date",
             "value":"Wed, 27 Jan 2016 14:05:45 +0000"
           }
         ],
         "commonHeaders":{ 
           "from":[ 
              "John Doe <john@example.com>"
           ],
           "date":"Wed, 27 Jan 2016 14:05:45 +0000",
           "to":[ 
              "Jane Doe <jane@example.com>, Mary Doe <mary@example.com>, Richard Doe <richard@example.com>"
           ],
           "messageId":"custom-message-ID",
           "subject":"Hello"
         }
      }
   }
```

### 不带反馈报告的投诉通知
<a name="notification-examples-complaint-no-feedback"></a>

下面是一个包含原始电子邮件标头但不包含反馈报告的投诉通知的示例。当投诉通知未配置为包含原始电子邮件标头时，这些通知内的 `mail` 对象不会包含 `headersTruncated`、`headers` 和 `commonHeaders` 字段。

```
   {
      "notificationType":"Complaint",
      "complaint":{
         "complainedRecipients":[
            {
               "emailAddress":"richard@example.com"
            }
         ],
         "timestamp":"2016-01-27T14:59:38.237Z",
         "feedbackId":"0000013786031775-fea503bc-7497-49e1-881b-a0379bb037d3-000000"
      },
      "mail":{
         "timestamp":"2016-01-27T14:59:38.237Z",
         "messageId":"0000013786031775-163e3910-53eb-4c8e-a04a-f29debf88a84-000000",
         "source":"john@example.com",
         "sourceArn": "arn:aws:ses:us-east-1:888888888888:identity/example.com",
         "sourceIp": "127.0.3.0",
         "sendingAccountId":"123456789012",
         "callerIdentity": "IAM_user_or_role_name",
         "destination":[
            "jane@example.com",
            "mary@example.com",
            "richard@example.com"
         ],
         "headersTruncated":false,
         "headers":[ 
          { 
            "name":"From",
            "value":"\"John Doe\" <john@example.com>"
          },
          { 
            "name":"To",
            "value":"\"Jane Doe\" <jane@example.com>, \"Mary Doe\" <mary@example.com>, \"Richard Doe\" <richard@example.com>"
          },
          { 
            "name":"Message-ID",
            "value":"custom-message-ID"
          },
          { 
            "name":"Subject",
            "value":"Hello"
          },
          { 
            "name":"Content-Type",
            "value":"text/plain; charset=\"UTF-8\""
          },
          { 
            "name":"Content-Transfer-Encoding",
            "value":"base64"
          },
          { 
            "name":"Date",
            "value":"Wed, 27 Jan 2016 14:05:45 +0000"
          }
          ],
          "commonHeaders":{ 
             "from":[ 
                "John Doe <john@example.com>"
             ],
             "date":"Wed, 27 Jan 2016 14:05:45 +0000",
             "to":[ 
                "Jane Doe <jane@example.com>, Mary Doe <mary@example.com>, Richard Doe <richard@example.com>"
             ],
             "messageId":"custom-message-ID",
             "subject":"Hello"
          }
       }
   }
```

## Amazon SNS 送达通知示例
<a name="notification-examples-delivery"></a>

下面是包含原始电子邮件标头的送达通知的示例。当送达通知未配置为包含原始电子邮件标头时，这些通知内的 `mail` 对象不会包含 `headersTruncated`、`headers` 和 `commonHeaders` 字段。

```
   {
      "notificationType":"Delivery",
      "mail":{
         "timestamp":"2016-01-27T14:59:38.237Z",
         "messageId":"0000014644fe5ef6-9a483358-9170-4cb4-a269-f5dcdf415321-000000",
         "source":"john@example.com",
         "sourceArn": "arn:aws:ses:us-east-1:888888888888:identity/example.com",
         "sourceIp": "127.0.3.0",
         "sendingAccountId":"123456789012",
         "callerIdentity": "IAM_user_or_role_name",
         "destination":[
            "jane@example.com"
         ], 
          "headersTruncated":false,
          "headers":[ 
           { 
              "name":"From",
              "value":"\"John Doe\" <john@example.com>"
           },
           { 
              "name":"To",
              "value":"\"Jane Doe\" <jane@example.com>"
           },
           { 
              "name":"Message-ID",
              "value":"custom-message-ID"
           },
           { 
              "name":"Subject",
              "value":"Hello"
           },
           { 
              "name":"Content-Type",
              "value":"text/plain; charset=\"UTF-8\""
           },
           { 
              "name":"Content-Transfer-Encoding",
              "value":"base64"
           },
           { 
              "name":"Date",
              "value":"Wed, 27 Jan 2016 14:58:45 +0000"
           }
          ],
          "commonHeaders":{ 
            "from":[ 
               "John Doe <john@example.com>"
            ],
            "date":"Wed, 27 Jan 2016 14:58:45 +0000",
            "to":[ 
               "Jane Doe <jane@example.com>"
            ],
            "messageId":"custom-message-ID",
            "subject":"Hello"
          }
       },
      "delivery":{
         "timestamp":"2016-01-27T14:59:38.237Z",
         "recipients":["jane@example.com"],
         "processingTimeMillis":546,     
         "reportingMTA":"a8-70.smtp-out.amazonses.com",
         "smtpResponse":"250 ok:  Message 64111812 accepted",
         "remoteMtaIp":"127.0.2.0"
      } 
   }
```