首页 > 解决方案 > 使用 Microsoft GraphServiceClient API 和 C# 检索邮件的附件

问题描述

我有以下代码:

var graphServiceClient = GraphClientFactory.GetGraphServiceClient(config.ClientId, config.Authority, config.Scopes);

MailMessagePage = await graphServiceClient.Me.MailFolders.Inbox.Messages
    .Request()
        .Expand("attachments")
    .GetAsync();

foreach (var mm in MailMessagePage)
{
    foreach (var a in mm.Attachments)
    {

    }
}

此代码已成功下载收件箱消息,并且内部 foreach 循环正在枚举附件集合。这是一个例子:

手表

不包括的是实际的附件数据。有没有人有下载实际附件数据的例子?

谢谢

根据 Darrel 的建议,我实现了以下内容。

var outlookItem = 等待 builder.Request().GetAsync();

正在返回附件的元数据,而不是附件本身。我追求数据。

MailMessagePage = await graphServiceClient.Me.MailFolders.Inbox.Messages
    .Request()
    .Expand("attachments")
    .GetAsync();

foreach (var mm in MailMessagePage)
{
    foreach (var itemAttachment in mm.Attachments)
    {
        if(itemAttachment is ItemAttachment)
        {
            var builder = new ItemAttachmentRequestBuilder(graphServiceClient.Me.Messages[mm.Id].Attachments[itemAttachment.Id].RequestUrl, graphServiceClient);
            var outlookItem = await builder.Request().GetAsync(); 
        }
    }
}

观看显示 itemAttachnment 与 outlookItem

标签: c#microsoft-graph-apimicrosoft-graph-mail

解决方案


你试过下面的吗?取自这里

var attachments = await graphServiceClient.Me.Messages[messageId]
   .Attachments
   .Request()
   .GetAsync();

然后,您可以检查它们是否是具有包含实际附件数据的 ContentBytes 属性的 FileAttachment。


推荐阅读