如何使用Graph REST API获取深度嵌套邮件的MIME内容
获取深度嵌套嵌入式邮件的MIME内容
我之前也碰到过类似的嵌套邮件MIME获取问题,微软Graph API在这里的逻辑得特别注意——每一层嵌入式邮件本质上都是一个独立的message资源,不是直接挂载在父附件的层级路径下。你之前尝试的那些路径之所以失败,是因为错误地把附件ID嵌套拼接了,正确的做法是逐层提取嵌套邮件的消息ID,再通过这个ID来获取它的MIME内容。
具体操作步骤如下:
获取外层邮件的附件,提取第一层嵌入式邮件的消息ID
先调用接口拿到外层邮件的所有附件:GET /users/{USER_ID}/messages/{MSG_ID}/attachments在返回结果里,找到
mimeType为message/rfc822的嵌入式邮件附件,它的message属性里会有一个id字段(这就是这个嵌入式邮件本身的消息ID,记为NESTED_MSG_1_ID)。获取第一层嵌套邮件的附件,提取第二层嵌入式邮件的消息ID
用第一步拿到的消息ID,调用接口获取该嵌套邮件的附件:GET /users/{USER_ID}/messages/{NESTED_MSG_1_ID}/attachments同样找到其中
mimeType为message/rfc822的附件,提取它的message.id(记为NESTED_MSG_2_ID)。获取深层嵌套邮件的MIME内容
最后用最深层的消息ID,调用标准的邮件MIME获取接口:GET /users/{USER_ID}/messages/{NESTED_MSG_2_ID}/$value
补充说明
- 不管嵌套多少层,逻辑都是一致的:每一层嵌入式邮件都对应一个独立的
message资源,需要先通过父级邮件/嵌套邮件的附件列表找到它的消息ID,再基于这个ID进行后续操作。 - 别尝试用附件ID拼接路径(比如
attachments/{ATTACHMENT1_ID}/attachments/{ATTACHMENT2_ID}),这种路径在Graph API里是不被支持的——附件本身没有子附件的层级结构,只有message资源才有自己的附件集合。
内容的提问来源于stack exchange,提问作者Hippocrates
相关产品推荐
相关产品推荐

