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

如何使用Microsoft Graph从Item Attachment获取MIME Content?

获取Item Attachment的MIME内容(C# Graph SDK)

你当前通过Expand获取Item Attachment的代码只能拿到嵌套message的元数据,要获取它的MIME内容,需要针对展开后的item资源调用Content接口,对应API中$value的路径,具体实现如下:

现有代码问题

你当前的代码:

var result = await _appClient
.Users[userId].Messages[messageId].Attachments[attachmentId].GetAsync((requestConfiguration) =>
{
requestConfiguration.QueryParameters.Expand = new string[] { "microsoft.graph.itemattachment/item"};
});

返回的仅包含嵌套message的基础信息,没有MIME内容。

解决方案

要获取嵌套message的MIME内容,可以直接调用Item.Content.GetAsync()方法,这对应API路径末尾的$value:

方法一:先获取Attachment再获取MIME内容

// 获取Item Attachment并展开嵌套的message
var itemAttachment = await _appClient
    .Users[userId]
    .Messages[messageId]
    .Attachments[attachmentId]
    .GetAsync(config => 
    {
        config.QueryParameters.Expand = new[] { "microsoft.graph.itemattachment/item" };
    });

// 类型校验后获取MIME内容
if (itemAttachment is ItemAttachment itemAtt && itemAtt.Item is Message nestedMsg)
{
    var mimeStream = await _appClient
        .Users[userId]
        .Messages[messageId]
        .Attachments[attachmentId]
        .Item
        .Content
        .GetAsync();

    // 将流转换为字符串
    using var streamReader = new StreamReader(mimeStream);
    string mimeContent = await streamReader.ReadToEndAsync();
}

方法二:直接请求MIME内容

如果不需要Attachment的其他信息,可以直接构造请求获取MIME流:

var mimeStream = await _appClient
    .Users[userId]
    .Messages[messageId]
    .Attachments[attachmentId]
    .Item
    .Content
    .GetAsync();

// 处理流,比如保存到文件或转换为字符串
using var fileStream = new FileStream("nested-message.eml", FileMode.Create);
await mimeStream.CopyToAsync(fileStream);

说明

Item.Content.GetAsync()方法对应的Graph API路径是/users/{userId}/messages/{messageId}/attachments/{attachmentId}/item/$value,会直接返回嵌套message的MIME格式内容(通常是.eml格式的流)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 08:12:02