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

通过Microsoft Graph API订阅接收邮件时,如何获取Immutable Id?

解决Microsoft Graph API获取收件邮件Immutable Id的问题

一、正确通过GET Message API获取Immutable Id

你之前调用GET message时没拿到Immutable Id,大概率是请求头的使用方式有误。正确操作是:

  • 在请求中添加完整的Prefer请求头:Prefer: IdType="ImmutableId",注意引号是英文双引号,不能省略或替换。
  • 此时API返回的邮件对象中,id字段的值就是该邮件的Immutable Id,而非额外新增字段。不管是获取单封邮件(GET /me/messages/{id})还是邮件列表(GET /me/mailFolders('inbox')/messages),只要带上这个头,返回的所有id都会是Immutable格式。

二、通过订阅直接获取收件邮件的Immutable Id

如果想在订阅通知中直接拿到Immutable Id,不需要后续额外调用API,只需在创建订阅时添加相同的Prefer请求头:

创建订阅的请求示例

POST https://graph.microsoft.com/v1.0/subscriptions
Prefer: IdType="ImmutableId"
Content-Type: application/json

{
  "changeType": "created",
  "notificationUrl": "https://your-notification-endpoint.com",
  "resource": "/me/mailFolders('inbox')/messages",
  "expirationDateTime": "2024-05-20T18:23:45.9356913Z",
  "clientState": "your-client-secret"
}

创建成功后,当有新邮件进入收件箱时,你收到的通知 payload 里,resourceData.id字段的值就是该邮件的Immutable Id,直接存入数据库即可用于后续回复操作。

三、已存在订阅的补救方案

如果已经创建了订阅且无法重新创建,收到通知后可以用通知里的普通Id,调用GET /me/messages/{普通Id}并带上Prefer: IdType="ImmutableId"头,获取对应的Immutable Id后再存入数据库。

内容的提问来源于stack exchange,提问作者nilesh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 15:45:09