一种从 S3 上的电子邮件中获取 BCC 收件人的方法(SES 电子邮件接收)

A way to get BCC recipients from a email on S3 (SES email receiving)

我正在使用将原始消息存储在 S3 中的 SES 入站。电子邮件进入一个存储桶,然后我有一个脚本来解析存储桶中的每封电子邮件并提取 所有电子邮件收件人

问题是有时,对于所有收件人都在密件抄送中的电子邮件,无法知道收件人是谁,原始电子邮件中没有 header 值。看起来原始的似乎无法获得 BCC 收件人。

我怎么知道邮件最初发往的真实地址是哪些?也许有一种方法可以将自定义 header 添加到收件人的原始文件中,或者使用一些 SES API 和 X-SES-RECEIPT,我不知道。

来自 AWS 工程师的任何有同样顾虑的人:

为了接收有用的元数据,例如邮件的收件人(无需解析 headers),我建议为通过 S3 操作收到的电子邮件订阅 SNS 通知。

通知的 'recipients' 字段将包含您要查找的信息。有关内容的更多详细信息:http://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-notifications-contents.html

有关 S3 操作的 SNS 主题 属性 的更多信息可在此处找到:http://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-action-s3.html

似乎有一个 Received header,其中包含“... for email@foo.com;”地址里面。但是,我将其视为“... for email@foo.com;”并作为“......对于;”。所以解析起来有点棘手。

例如在这种情况下,收件人是:email.foo.com

Received: from mail-qt0-f876.google.com (mail-qt0-f876.google.com [209.85.216.176])
 by inbound-smtp.us-west-1.amazonaws.com with SMTP id 8t8gp7m0c81g6ddn1g8b7klev4cnlup039tuhlg1
 for test@email.foo.com;
 Thu, 12 Oct 2017 00:51:01 +0000 (UTC)

我也看到了(即使在同一条消息中):

Received: by mail-qt0-f876.google.com with SMTP id v41so999755qtv.12
    for <test@email.foo.com>; Wed, 11 Oct 2017 17:51:01 -0700 (PDT)