我试图了解SNS如何为多个收件人传输单个通知。亚马逊SES文档指出:
对于给定的通知类型,您可能会收到一个Amazon SNS 多个收件人的通知,或者您可能会收到一个 每个收件人的Amazon SNS通知。
但没有举例。
让我们使用缩写传递通知作为示例:
{
"Message": {
"notificationType":"Delivery",
"mail":{
"timestamp":"2017-06-22T17:15:53.980Z",
"messageId":"123",
"destination":["john@example.com"],
},
"delivery":{
"timestamp":"2017-06-22T17:15:54.873Z",
"recipients":["john@example.com"],
},
},
"Type": "Notification"
}
亚马逊如何在单个通知中为多个收件人提供信息? JSON对象的结构似乎特定于单个事件,并且似乎不适合提供有关多个收件人的信息。例如,只有一个"交付"用一个"时间戳"。你怎么能向两个人报告送货情况?
退回和投诉通知似乎与为多个收件人提供信息不兼容。
答案 0 :(得分:2)
JSON对象的结构似乎特定于单个事件
右。只有当多个收件人参与单个事件时才会发生这种情况。
多个收件人在逻辑上可以在一个通知中(只有一个时间戳)的唯一方法是,他们的邮箱是由同一个邮件交换器(MX)处理的。
对SMTP有线协议的低级理解使这一点更加清晰。对于每个SMTP事务,SMTP协议要求发送服务器首先标识发件人,然后一个或多个收件人,然后传输邮件有效负载。当SES向多个收件人发送单个邮件,其电子邮件地址映射到同一个MX时,它可以选择通过在单个事务中指定多个收件人来避免冗余传输完全相同的数据...在这种情况下,多个收件人将所有人都同时收到了这条消息。
反弹也是如此。如果目标服务器拒绝了这两个收件人,则会同时发生跳出事件。
投诉不同,但想法是一样的。如果目标系统推迟了各个用户的投诉并将它们一起推回到SES,则应该是多个收件人的可能情况。这个似乎不太可能。
但是,如果您向gmail地址和Hotmail地址发送了一条消息,那么这种情况永远不会发生,因为这些目的地没有共同的基础设施。
数据结构当然可以容纳多个收件人,destination
和recipients
都是数组。