You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Microsoft Graph API获取邮件投递/打开/退回状态并触发通知?

Microsoft Graph API邮件状态跟踪方案

1. 用Webhook订阅接收状态变更通知

Graph API支持通过订阅机制触发自定义端点,实时获取邮件状态变化:

  • 对于已发送邮件的投递/状态更新:订阅/me/mailFolders('SentItems')/messages的updated事件,当邮件的deliveryStatus等状态字段变化时,会自动向你配置的notificationUrl发送通知。
  • 对于未送达报告(NDR):NDR是系统推送到收件箱的邮件,你可以订阅/me/mailFolders('Inbox')/messages的created事件,然后在自定义端点里过滤主题含"Undeliverable"(或对应语言的退回关键词)的邮件,以此捕获退回通知。
  • 配置订阅的核心请求示例:
    POST /subscriptions
    {
      "changeType": "updated",
      "notificationUrl": "https://your-custom-endpoint.com/webhook",
      "resource": "/me/mailFolders('SentItems')/messages",
      "expirationDateTime": "2024-12-31T00:00:00Z",
      "clientState": "your-secret-token"
    }
    
    注意:你的自定义端点必须能处理Graph的初始验证请求(返回请求中的validationToken),否则订阅创建会失败。

2. 通过API主动查询状态与报告

  • 查询单封邮件的投递状态:调用GET /me/mailFolders('SentItems')/messages/{message-id},返回结果的internetMessageHeaders里包含投递相关的元数据,比如X-MS-Exchange-Organization-Delivery-Report;部分场景下deliveryStatus字段也会直接显示投递状态。
  • 获取未送达报告:直接查询收件箱中系统发送的NDR邮件,示例请求:
    GET /me/messages?$filter=subject contains 'Undeliverable' and from/emailAddress/address eq 'postmaster@outlook.com'
    
    拿到NDR邮件后,解析正文或internetMessageHeaders里的X-Failed-Recipients、Diagnostic-Code等字段,就能获取具体的退回原因。

3. 批量邮件跟踪(需管理员权限)

如果是批量发送邮件,还可以用Exchange管理员权限调用邮件跟踪日志API:

GET /admin/microsoft/Exchange/mailTracking/mailTrackingEvents?$filter=senderAddress eq 'your-email@domain.com' and eventDateTime ge 2024-01-01T00:00:00Z

这个API能返回投递、打开、退回等全流程的事件日志,适合批量场景的跟踪需求。

内容的提问来源于stack exchange,提问作者Андрей Смольков

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 17:07:21