Amazon SES 发布到 Amazon SNS 的事件数据的内容 - Amazon Simple Email Service

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

Amazon SES 发布到 Amazon SNS 的事件数据的内容

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

您可以在 Amazon SES 发布到 Amazon SNS 的事件数据示例 中找到所有这些通知类型的示例记录。

顶级 JSON 对象

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

字段名称 描述

eventType

一个描述事件类型的文本字符串。可能的值:BounceComplaintDeliverySendRejectOpenClickRendering FailureDeliveryDelaySubscription

如果尚未设置事件发布,则此字段将命名为 notificationType

mail

JSON 对象,包含有关生成事件的电子邮件的信息。

bounce

仅当 eventTypeBounce 时,此字段才存在。它包含有关退信的信息。

complaint

仅当 eventTypeComplaint 时,此字段才存在。它包含有关投诉的信息。

delivery

仅当 eventTypeDelivery 时,此字段才存在。它包含有关送达的信息。

send

仅当 eventTypeSend 时,此字段才存在。

reject

仅当 eventTypeReject 时,此字段才存在。它包含有关拒绝的信息。

open

仅当 eventTypeOpen 时,此字段才存在。它包含有关打开事件的信息。

click

仅当 eventTypeClick 时,此字段才存在。它包含有关点击事件的信息。

failure

仅当 eventTypeRendering Failure 时,此字段才存在。它包含有关呈现失败事件的信息。

deliveryDelay

仅当 eventTypeDeliveryDelay 时,此字段才存在。它包含有关延迟送达电子邮件的信息。

subscription

仅当 eventTypeSubscription 时,此字段才存在。它包含有关订阅首选项的信息。

邮件对象

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

字段名称 描述

timestamp

发送消息的日期和时间,采用 ISO86 01 格式(YYYY-MM--: mm: ss.sz DDThh)。

messageId

Amazon SES 分配给电子邮件的唯一 ID。Amazon SES 在您发送邮件时已向您返回此值。

注意

此邮件 ID 已由 Amazon SES 分配。您可以在 mail 对象的 headerscommonHeaders 字段中找到原始电子邮件的邮件 ID。

source

发送邮件的电子邮件地址(信封 MAIL FROM 地址)。

sourceArn

已用于发送电子邮件的身份的 Amazon Resource Name(ARN)。在发送授权的情况下,sourceArn 是身份拥有者授权委托发件人用于发送电子邮件的身份的 ARN。有关发送授权的更多信息,请参阅电子邮件身份验证方法

sendingAccountId

用于发送电子邮件的账户的账户 ID。 AWS 在发送授权的情况下,sendingAccountId 是委托发件人的账户 ID。

destination

作为原始邮件的收件人的电子邮件地址的列表。

headersTruncated

一个字符串,指定标头是否会在通知中被截断,如果标头大于 10 KB,则会发生截断。可能的值为 truefalse

headers

电子邮件的原始标头的列表。列表中的每个标头均有一个 name 字段和一个 value 字段。

注意

headers 字段内的任何邮件 ID 均来自您传递至 Amazon SES 的原始邮件。Amazon SES 随后分配给电子邮件的邮件 ID 位于 messageId 对象的 mail 字段中。

commonHeaders

电子邮件的原始常用标头的映射。

注意

commonHeaders 字段中的任何邮件 ID 是 Amazon SES 随后在 mail 对象的 messageId 字段中分配给邮件的邮件 ID。

tags

与电子邮件关联的标签的列表。

退信对象

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

字段名称 描述

bounceType

退信的类型,由 Amazon SES 确定。

bounceSubType

退信的子类型,由 Amazon SES 确定。

bouncedRecipients

包含已退回的原始邮件收件人相关信息的列表。

timestamp

互联网服务提供商发送退回通知的日期和时间,采用 ISO86 01 格式(YYYY-MM--: mm: ss.sz DDThh)。

feedbackId

退信的唯一 ID。

reportingMTA

DSN 中的 Reporting-MTA 字段的值。这是尝试执行 DSN 所述的传输、中继或网关操作的 Message Transfer Authority(MTA)的值。

注意

此字段仅在传输状态通知(DSN)附加到退信时显示。

退信的收件人

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

字段名称 描述

emailAddress

收件人的电子邮件地址。如果 DSN 可用,这将是 DSN 中的 Final-Recipient 字段的值。

(可选)如果 DSN 已附加到退信,则以下字段也可能存在。

字段名称 描述

action

DSN 中的 Action 字段的值。这表示报告 MTA 因尝试将邮件传输至此收件人而需执行的操作。

status

DSN 中的 Status 字段的值。这是每个收件人与传输无关的状态代码,用于指示邮件的传输状态。

diagnosticCode

报告 MTA 发放的状态代码。这是 DSN 中的 Diagnostic-Code 字段的值。此字段可能不在 DSN 中(因此也不在 JSON 中)。

退信类型

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

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

bounceType bounceSubType 描述

Undetermined

Undetermined

Amazon SES 无法确定特定的退信原因。

Permanent

General

Amazon SES 收到了一封常规硬退信。如果您收到此类退信,您应从邮件列表中删除收件人的电子邮件地址。

Permanent

NoEmail

Amazon SES 收到永久硬退信,因为目标电子邮件地址不存在。如果您收到此类退信,您应从邮件列表中删除收件人的电子邮件地址。

Permanent

Suppressed

Amazon SES 已禁止发送邮件到此地址,因为该地址最近出现过做作为无效地址被退回的历史记录。要覆盖全局黑名单,请参阅 使用 Amazon SES 账户级黑名单

Permanent OnAccountSuppressionList Amazon SES 已禁止发送到此地址,因为该地址已被加入账户级黑名单。这不计入您的跳出率指标。

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 收到附件拒绝退信。如果您删除或更改附件,则也许能够向该收件人成功发送电子邮件。

投诉对象

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

字段名称 描述

complainedRecipients

包含可能已提交投诉的收件人的相关信息列表。

timestamp

互联网服务提供商发送投诉通知的日期和时间,采用 ISO86 01 格式(YYYY-MM--: mm: ss.sz DDThh)。

feedbackId

投诉的唯一 ID。

complaintSubType

投诉的子类型,由 Amazon SES 确定。

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

字段名称 描述

userAgent

反馈报告中的 User-Agent 字段的值。此值表示生成了报告的系统的名称和版本。

complaintFeedbackType

从 ISP 收到的反馈报告中的 Feedback-Type 字段的值。此值包含反馈的类型。

arrivalDate

反馈报告中Arrival-DateReceived-Date字段的值,格式为 ISO86 01(YYYY-MM--: mm: ss.sz)。DDThh此字段可能不在报告中(因此也不在 JSON 中)。

已投诉的收件人

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

重要

大多数 ISPs 会删除提交投诉的收件人的电子邮件地址。出于此原因,complainedRecipients 字段包含域中已向其发送电子邮件而该地址发布了投诉通知的所有人的列表。

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

字段名称 描述

emailAddress

收件人的电子邮件地址。

投诉类型

根据complaintFeedbackType互联网编号分配机构网站,您可在由报告 ISP 分配的 字段中看到以下投诉类型:

字段名称 描述

abuse

指示未经请求的电子邮件或某种其他类型的电子邮件滥用。

auth-failure

电子邮件身份验证失败报告。

fraud

指示某种欺诈或网络钓鱼活动。

not-spam

指示提供报告的实体不会将邮件视为垃圾邮件。这可用于更正被错误地标记或分类为垃圾邮件的邮件。

other

指示不适合其他已注册类型的任何其他反馈。

virus

报告在原始邮件中发现病毒。

投诉子类型

complaintSubType 字段的值可以为 null 或 OnAccountSuppressionList。如果该值为 OnAccountSuppressionList,则表示 Amazon SES 已接受邮件,但未尝试发送邮件,因为该地址已被加入账户级黑名单

送达对象

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

字段名称 描述

timestamp

Amazon SES 将电子邮件发送到收件人的邮件服务器的日期和时间,格式为 ISO86 01(YYYY-MM--: mm: ss.sz)。DDThh

processingTimeMillis

从 Amazon SES 接受来自发件人的请求到 Amazon SES 将邮件传递到收件人的邮件服务器的时间(以毫秒为单位)。

recipients

传送事件应用于的预定收件人的列表。

smtpResponse

从 Amazon SES 接受电子邮件的远程 ISP 的 SMTP 响应消息。此消息因电子邮件、接收邮件服务器以及接收 ISP 而异。

reportingMTA

发送邮件的 Amazon SES 邮件服务器的主机名。

发送对象

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

拒绝对象

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

字段名称 描述

reason

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

打开对象

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

字段名称 描述

ipAddress

收件人的 IP 地址。

timestamp

公开事件发生的日期和时间采用 ISO86 01 格式(YYYYY-MM--: mm: ss.sz)。DDThh

userAgent

收件人用于打开电子邮件中的设备或电子邮件客户端的用户代理。

单击对象

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

字段名称 描述

ipAddress

收件人的 IP 地址。

timestamp

点击事件发生的日期和时间,格式为 ISO86 01(YYYY-MM--: mm: ss.sz)。DDThh

userAgent

收件人单击电子邮件中链接时使用的客户端的用户代理。

link

收件人点击的链接的 URL。

linkTags

使用 ses:tags 属性添加到链接的标签的列表。有关向电子邮件中的链接添加标签的更多信息,请参阅 Amazon SES 电子邮件发送指标 FAQs中的问题 5:我能否用唯一标识符来标记链接?

呈现失败对象

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

字段名称 描述

templateName

用于发送电子邮件的模板的名称。

errorMessage

提供有关呈现失败详细信息的消息。

DeliveryDelay 对象

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

字段名称 描述

delayType

延迟的类型。可能的值有:

  • InternalFailure— Amazon SES 内部问题导致消息延迟。

  • General – SMTP 对话期间发生了常规故障。

  • MailboxFull— 收件人的邮箱已满,无法接收其他消息。

  • SpamDetected— 收件人的邮件服务器检测到来自您的帐户的大量未经请求的电子邮件。

  • RecipientServerError— 收件人的电子邮件服务器暂时出现问题,导致邮件无法传送。

  • IPFailure— 发送邮件的 IP 地址被收件人的电子邮件提供商屏蔽或限制。

  • TransientCommunicationFailure— 在与收件人的电子邮件提供商进行 SMTP 对话期间,出现临时通信故障。

  • BYOIPHostNameLookupUnavailable— Amazon SES 无法查找你的 IP 地址的 DNS 主机名。这种类型的延迟仅在您使用自带 IP 时发生。

  • Undetermined – Amazon SES 无法确定送达延迟的原因。

  • SendingDeferral— Amazon SES 认为在内部推迟该消息是适当的。

delayedRecipients

包含有关电子邮件收件人的信息的对象。

expirationTime

Amazon SES 将停止尝试传输邮件的日期和时间。此值以 ISO 8601 格式显示。

reportingMTA

报告延迟的邮件传输代理(MTA)的 IP 地址。

timestamp

发生延迟的日期和时间,以 ISO 8601 格式显示。

延迟的收件人

delayedRecipients 对象包含以下值。

字段名称 描述

emailAddress

导致邮件送达延迟的电子邮件地址。

status

与送达延迟关联的 SMTP 状态代码。

diagnosticCode

接收邮件传输代理(MTA)提供的诊断代码。

订阅对象

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

字段名称 描述

contactList

联系人所在的列表的名称。

timestamp

互联网服务提供商发送订阅通知的日期和时间,采用 ISO86 01 格式(YYYY-MM--: mm: ss.sz DDThh)。

source

发送邮件的电子邮件地址(信封 MAIL FROM 地址)。

newTopicPreferences

一个 JSON 数据结构(映射),它指定联系人列表中所有主题的订阅状态,用于指示更改后的状态(联系人已订阅或已取消订阅)。

oldTopicPreferences

一个 JSON 数据结构(映射),它指定联系人列表中所有主题的订阅状态,用于指示更改前的状态(联系人已订阅或已取消订阅)。

新/旧主题首选项

newTopicPreferencesoldTopicPreferences 对象包含以下值。

字段名称 描述

unsubscribeAll

指定联系人是否已取消订阅联系人列表中的所有主题。

topicSubscriptionStatus

topicName 字段中指定主题的订阅状态,该字段指示该主题当前是否已订阅以接收来自 SES 的指定事件类型的通知。字段中可能的值为 OptIn(已订阅)或 OptOut(取消订阅)。subscriptionStatus

topicDefaultSubscriptionStatus

topicName 字段中指定主题的默认订阅状态,以确定默认情况下是订阅还是取消订阅添加到事件目标的新主题。字段中可能的值为 OptIn(默认情况下已订阅)或 OptOut(默认取消订阅)。subscriptionStatus