Graph API获取邮件附件时.msg格式文件扩展名缺失问题咨询
根因说明
你遇到的是微软Graph API的默认行为:当用户通过Outlook插入本地.msg格式的邮件文件作为附件时,Outlook会默认将其识别为嵌入邮件条目而非普通文件,对应Graph API返回的@odata.type为#microsoft.graph.itemAttachment,这类附件的name字段默认不带.msg后缀。
可用解决方案
方案1:接收端兼容处理(适用绝大多数场景)
直接对返回结果做判断即可:
- 当附件的
@odata.type为#microsoft.graph.itemAttachment时,直接给返回的name字段拼接.msg后缀即可使用 - 如果需要更严谨的校验,可以调用带
$expand参数的接口展开条目详情:
接口格式:https://graph.microsoft.com/v1.0/me/messages/{邮件ID}/attachments?$expand=item
展开后如果item节点的@odata.type为#microsoft.graph.message,即可确认是邮件类附件,拼接.msg后缀即可。
方案2:发件端操作调整(仅适用于发件流程可控的场景)
如果发件时你希望.msg附件以普通文件形式(fileAttachment类型)返回,插入附件时可以调整操作:
- 右键拖拽本地.msg文件到邮件编辑窗口,松开后选择「复制为附件」,而非默认的嵌入邮件项
- 调整后Graph API返回的就是带完整
.msg后缀的fileAttachment类型附件,和其他格式文件的返回结构完全一致
补充说明
如果你需要下载itemAttachment类型的附件,直接调用接口https://graph.microsoft.com/v1.0/me/messages/{邮件ID}/attachments/{附件ID}/$value即可获取标准.msg格式的二进制流,和拼接后缀后的文件名绑定保存即可正常打开。
内容的提问来源于stack exchange,提问作者Leigh Kibbey
相关产品推荐
相关产品推荐

