【发布时间】:2021-12-13 12:58:42
【问题描述】:
我们的团队需要以某种方式从我们的 python 代码中检测被退回(永久)的消息,并将它们添加到我们的退回列表中,以便将来不再发送它们。因此,例如,当我们向不存在的邮箱发送通知时,预期的行为是从消息系统接收退回邮件,该邮件将为用户和管理员诊断信息提供一些信息。为了检测永久退回的邮件,我们尝试使用名为 flufl.bounce 的 python 库,在调查期间,当我通过 IMAP 扫描我的个人 Gmail 帐户时,我能够检测到退回邮件,并且该库运行良好。但是,由于不再支持基本身份验证,并且尚未为 IMAP 实现 OAuth 客户端凭据流,因此无法在我们的用例中将 IMAP 用于我们在 azure 中的共享邮箱。因此,我们使用支持客户端凭据流的 Microsoft 图形 API 而不是 IMAP,并且我们能够从我们的邮箱中获取消息。但是,DSN 检测器是 flufl.bounce 库不会将此类邮件识别为已退回,即使从管理员诊断信息中可以清楚地看出邮件已退回。我进行了一些调查,发现该邮件不包含以下标头,这些标头应在响应中显示以将其识别为退回邮件。例如:
Content-Type: message/delivery-status
Reporting-MTA: dns; googlemail.com
Arrival-Date: Tue, 26 Oct 2021 02:35:28 -0700 (PDT)
X-Original-Message-ID: <****>
Final-Recipient: rfc822; ********************
Action: failed
Status: 5.1.1
Diagnostic-Code: SMTP; 550-5.1.1 The email account that you tried to reach does not exist. Please try
550-5.1.1 double-checking the recipient's email address for typos or
550-5.1.1 unnecessary spaces. Learn more at
550 5.1.1 https://support.google.com/mail/?p=NoSuchUser
Last-Attempt-Date: Tue, 26 Oct 2021 02:35:28 -0700 (PDT)
当我通过 Outlook 视图源检查退回邮件时,我可以找到此标题,但是,图形 api 响应不包含它们。我试图通过图形 api 获取 eml 版本的邮件,但是我没有找到这些标题。是否可以以某种方式将它们添加到响应中?还是应该等到 IMAP 的客户端凭据流发布?
【问题讨论】:
标签: microsoft-graph-api microsoft-graph-mail email-bounces