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

创建Microsoft Graph API订阅时$select=body失效及完整正文获取问题

解决Microsoft Graph API变更通知获取完整邮件正文的问题

核心限制说明

Microsoft Graph的变更通知订阅有明确规则:资源URL中不能直接指定$select=body,因为body属于大体积内容,不符合通知轻量级的设计初衷;但开启富通知(includeResourceData=true)时又必须包含$select子句,这就需要采用折中的两步方案。

实现方案

1. 创建合法的变更通知订阅

使用Graph允许的轻量字段(如id、subject、bodyPreview)构建$select子句,确保订阅创建成功。示例请求负载:

{
  "changeType": "created",
  "notificationUrl": "<你的通知URL>",
  "resource": "me/mailFolders('Inbox')/messages?$select=id,subject,bodyPreview",
  "expirationDateTime": "2024-02-26T21:00:00.000Z",
  "latestSupportedTlsVersion": "v1_2",
  "includeResourceData": "true",
  "encryptionCertificate": "<你的证书值>",
  "encryptionCertificateId": "<你的证书ID>"
}

该请求会成功生成订阅,后续收到的通知将包含消息的基础标识信息(核心是唯一id)。

2. 收到通知后获取完整正文

当你的notificationUrl接收到变更通知时,从通知 payload 中提取消息的id,再单独调用Graph API拉取完整正文:

GET /me/messages/{message-id}?$select=body

这个请求会返回包含完整body(支持HTML或纯文本格式)的消息数据,不受255字符的截断限制。

补充说明

这种两步法是Graph官方推荐的大内容字段处理方式,既满足订阅的轻量传输要求,又能获取到完整的资源数据。若需要加密传输,确保后续获取正文的请求同步使用对应加密配置,或依赖Graph的TLS加密保障传输安全。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 06:27:03