首页 > 解决方案 > 借助 Microsoft Graph API 检测退回邮件

问题描述

我们的团队需要以某种方式从我们的 python 代码中检测被退回(永久)的消息,并将它们添加到我们的退回列表中,以便将来不再发送它们。因此,例如,当我们向不存在的邮箱发送通知时,预期的行为是从消息系统接收退回邮件,该邮件将为用户和管理员诊断信息提供一些信息。为了检测永久退回的邮件,我们尝试使用名为 flufl.bounce 的 python 库,在调查期间,当我通过 IMAP 扫描我的个人 Gmail 帐户时,我能够检测到退回邮件,并且该库运行良好。但是,由于不再支持基本身份验证,并且尚未为 IMAP 实现 OAuth 客户端凭据流,因此无法在我们的用例中为我们在 Azure 中的共享邮箱使用 IMAP。因此,我们使用支持客户端凭据流的 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-apimicrosoft-graph-mailemail-bounces

解决方案


感谢您伸出援手。据我所知,MS Graph 目前不支持获取这些标头,您是否考虑在 Microsoft 开发人员平台上提交功能请求以便对其进行调查?

同时,您可能会考虑使用Microsoft Outlook Messaging API (MAPI)来检测退回的邮件。

让我知道这是否有帮助,如果您还有其他问题。


推荐阅读