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

使用Azure Graph API无法下载Outlook邮件的.eml格式附件

解决Azure Graph API获取Outlook EML附件无contentBytes字段的问题

问题原因

这是Graph API对附件类型的区分导致的:

  • Excel这类普通文件属于fileAttachment类型,API会直接返回contentBytes字段存储文件的Base64编码内容
  • EML格式附件属于itemAttachment类型,它本质是嵌入的完整邮件项,因此API不会在附件列表接口中返回contentBytes

解决方案

要获取EML附件的内容,需要针对该itemAttachment发起单独请求:

  1. 从附件列表中识别出类型为#microsoft.graph.itemAttachment的附件(即你的EML附件),记录它的id
  2. 调用以下Graph API端点获取该附件的原始内容:
GET /me/messages/{邮件ID}/attachments/{附件ID}/$value

(若操作其他用户邮箱,替换/me/为/users/{用户ID}/)

该请求会直接返回EML文件的原始字节流,可直接保存为.eml文件使用。

附件响应对比

  • EML附件(itemAttachment)响应示例:
{
    "@odata.context": "",
    "@odata.type": "#microsoft.graph.itemAttachment",
    "id": "AAMkAGYzZDI2Nj......",
    "lastModifiedDateTime": "2023-03-08T11:41:38Z",
    "name": "EML Test.eml",
    "contentType": "message/rfc822",
    "size": 71087,
    "isInline": false
}
  • 普通文件附件(fileAttachment)响应示例:
{
    "@odata.type": "#microsoft.graph.fileAttachment",
    "@odata.mediaContentType": "application/vnd.ms-excel",
    "id": "AAMkAGYzZDI2N....",
    "lastModifiedDateTime": "2023-03-07T13:12:52Z",
    "name": "Admins-07-02-202311_24.xls",
    "contentType": "application/vnd.ms-excel",
    "size": 42778,
    "isInline": false,
    "contentId": "f_ley9tj8o0",
    "contentLocation": null,
    "contentBytes": "0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAABAAAAMQAAAAAAAAAAEAAATwAAAAEAAAD+////AAAAADAAAAD////////////////////........"
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 12:22:49