Microsoft Graph - 通过 C# 保存文件附件?

Microsoft Graph - Saving file attachments through C#?

是否可以通过 Microsoft Graph 在 C# 中保存文件附件API?

我知道我可以获得附件的属性 (https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/api/attachment_get) - 我们也可以将它保存到特定位置吗?

当您获取附件属性时,它们将包含有关附件的信息。

three types 个附件。

首先,检查属性@odata.type中的附件类型并进行相应处理。

对于 fileAttachment 类型,它们包含一个 contentLocation 属性,即 the URI of the attachment contents.

您可以从 URI 下载附件。

一旦你有特定的 Microsoft Graph 消息,你可以,例如将其作为参数传递给方法。然后您需要发出另一个请求以通过消息 ID 获取附件,遍历附件并将其转换为 FileAttachment 以访问 ContentBytes 属性 最后将此字节数组保存到文件中.

private static async Task SaveAttachments(Message message)
{
    var attachments = 
        await _client.Me.MailFolders.Inbox.Messages[message.Id].Attachments.Request().GetAsync();

    foreach (var attachment in attachments.CurrentPage)
    {
        if (attachment.GetType() == typeof(FileAttachment))
        {
            var item = (FileAttachment)attachment; // Cast from Attachment
            var folder = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
            var filePath = Path.Combine(folder, item.Name);
            System.IO.File.WriteAllBytes(filePath, item.ContentBytes);
        }
    }
}