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

Microsoft Graph API技术问题:无法为邮件添加附件

解决Microsoft Graph API添加邮件附件报错问题

我明白你现在遇到的麻烦——能正常发送邮件但一加附件就报错,确实挺闹心的。结合你给出的代码片段,我几乎能确定问题出在附件的编码和结构定义上,咱们一步步来搞定它:

核心问题:Base64编码的换行符干扰

你用了chunk_split(base64_encode(...)),但Microsoft Graph API要求附件的contentBytes必须是无任何换行的纯Base64字符串,chunk_split会自动插入换行符,这会直接导致API解析失败。

修正后的完整代码示例

先调整Base64编码部分,然后补全正确的附件结构:

// 读取文件内容并直接Base64编码,不要添加换行
$fileContent = file_get_contents($path);
$b64Doc = base64_encode($fileContent);

// 构建完整的邮件请求Payload
$payload = [
    'Message' => [
        'subject' => $subject,
        'body' => [
            'contentType' => 'Html',
            'content' => '<p>这是邮件正文内容</p>' // 替换为你的实际正文
        ],
        'toRecipients' => [
            [
                'emailAddress' => [
                    'address' => 'recipient@yourdomain.com'
                ]
            ]
        ],
        'attachments' => [
            [
                '@odata.type' => '#microsoft.graph.fileAttachment',
                'name' => 'document.pdf', // 替换为你的附件文件名(带扩展名)
                'contentType' => 'application/pdf', // 替换为对应文件的MIME类型
                'contentBytes' => $b64Doc
            ]
        ]
    ],
    'saveToSentItems' => true // 可选:是否将邮件保存到已发送文件夹
];

额外注意事项

  • MIME类型要准确:比如.docx文件对应application/vnd.openxmlformats-officedocument.wordprocessingml.document,图片对应image/jpeg,类型错误也会触发API报错。
  • 检查附件大小:普通附件的大小上限是3MB,如果你的附件超过这个值,需要改用大文件上传会话的方式(通过/attachments/createUploadSession端点)。
  • 请求头设置正确:发送POST请求时,必须设置Content-Type: application/json,确保Payload以JSON格式传递,不要用form-data格式。

如果调整后还是报错,可以把具体的错误信息贴出来,我再帮你进一步排查~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:41:39