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

使用Microsoft Graph API添加JPEG图片到Teams消息附件失败求助

解决Microsoft Graph发送Teams频道消息时添加JPEG附件出现500错误的问题

你遇到的500内部服务器错误,核心原因是ContentUrl的格式不符合文档要求——这里的“data格式”指的是Data URI scheme,你需要把原始的base64字符串封装成特定格式,而不是直接传入。

修正后的代码示例

// 将原始base64字符串包装为Data URI格式
var dataUri = $"data:image/jpeg;base64,{base64String}";

var chatMessage = new ChatMessage 
{ 
    Subject = subject, 
    Body = new ItemBody 
    { 
        ContentType = BodyType.Html, 
        Content = message // 务必保证此处的<attachment id="<imageId>"></attachment>与附件Id完全匹配
    } 
};

chatMessage.Attachments = new List<ChatMessageAttachment> 
{ 
    new ChatMessageAttachment 
    { 
        Id = imageId, 
        ContentType = "image/jpeg", 
        ContentUrl = dataUri, // 使用包装后的Data URI
        Name = "HunnySuckle.jpg" 
    } 
};

var res = await graphClient.Teams[teamId].Channels[channelId].Messages.Request().AddAsync(chatMessage);

关键说明

  1. Data URI格式规则:
    格式为 data:[<mediatype>][;base64],<data>,针对JPEG图片,mediatype是image/jpeg,所以最终拼接成data:image/jpeg;base64,xxxxxx的形式,其中xxxxxx是你的原始图片base64内容。
  2. 附件ID关联:
    消息Body中的<attachment id="">属性值必须和ChatMessageAttachment的Id严格一致,否则Teams无法正确关联并显示附件。
  3. base64字符串校验:
    确保你的base64字符串是纯图片编码内容,没有额外的前缀(比如有些工具会生成data:image/jpeg;base64,开头的字符串,这时候你需要先去掉前缀再重新拼接),也不要包含换行符等多余字符。

额外排查建议

  • 如果修改后仍然报错,可以先发送仅包含附件的极简消息,排除消息内容中其他HTML元素的干扰;
  • 确认你的应用已获得ChannelMessage.Send的正确权限(委托或应用权限均可,需已完成授权流程)。

内容的提问来源于stack exchange,提问作者Rob Harris

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 13:02:44