在 Microsoft Graph/Outlook REST 中识别 DSN(传递状态通知)或 NDR(未传递报告)和失败的收件人 API

Identifying DSN (Delivery Status Notifications) or NDR (Non Delivery Reports) and the failed recipients in Microsoft Graph / Outlook REST API

我在这里发现了几个关于在各种邮件服务器中检测邮件状态的问题,但仍然不清楚如何使用 Outlook REST API。

In documentation 我们可以看到请求的响应:

GET https://graph.microsoft.com/v1.0/me/messages/AAMkADhMGAAA=

但答案似乎没有包含此类信息的字段。我还调查了 headers:

的请求
https://graph.microsoft.com/v1.0/me/mailfolders/inbox/messages?$select=subject,internetMessageHeaders

不幸的是,没有 header 像 X-Failed-Recipients

有什么方法可以使用 Outlook API 获取传递状态 and/or 失败的收件人?

我的方法是像您一样获取消息详细信息和 internetMessageHeaders。

  • 首先我检查 header Content-Typemultipart/report 表示 DSN(传递状态通知),请参阅 RFC 3461.

    • GET https://graph.microsoft.com/v1.0/me/messages/<id>?$select=internetMessageHeaders
  • 然后我得到消息的 toRecipients 属性 其中包含 失败的收件人的电子邮件地址。

    • GET https://graph.microsoft.com/v1.0/me/messages/<id>

注:

  • 并非所有邮件服务器都遵循 RFC3461,因此一些 DSN/NDR 电子邮件可能会漏掉
  • 我找不到任何文档说 toRecipients 总是包含失败收件人的值,但到目前为止我还没有找到相反的例子。

我确实尝试提及 ,但是当我添加额外的“/”时它起作用了 在 link

GET https://graph.microsoft.com/v1.0/me/messages/<id>/?$select=internetMessageHeaders