gpt4 book ai didi

c# - 使用 Microsoft.Graph API 检索 ItemAttachment

转载 作者:行者123 更新时间:2023-12-04 17:41:44 27 4
gpt4 key购买 nike

我编写了一个成功地使用 Graph API 检查邮箱和检索消息的程序。如果消息包含标准附件(例如 PDF、Word 文档),则代码有效。我可以在调试中看到这些被认为是“FileAttachment”类型。但是,如果消息包含另一个电子邮件的附件,或语音邮件消息的 .wav 文件(这对我来说似乎很奇怪),则程序会阻塞,因为这些附件的类型是 ItemAttachment并且 Actor 阵容失败。相关代码是这样的:

var msgTask = GraphClient.Me.MailFolders.Inbox.Messages.Request().Filter(filter).Expand("attachments").GetAsync();
IMailFolderMessagesCollectionPage messages = msgTask.Result;
foreach (Message msg in messages)
{
// ...
foreach (Attachment att in msg.Attachments)
{
FileAttachment attachment = (FileAttachment)att;
MsgFile.Attachments.Add(new System.IO.MemoryStream(attachment.ContentBytes), attachment.Name);
}
}

我已经做了一些搜索,我正在使用 REST 查找文档以获取与 ItemAttachment 相关的数据。 ,但我没有使用 REST,至少不是直接使用。这是一个 Windows 命令行应用程序,我使用 NuGet 下载了 Microsoft.GraphMicrosoft.Graph.Core包。这些是我在代码中的其他任何地方使用的库,用于验证和访问 Office 365 数据。

所以,我想知道是否有人对如何使用这些库访问和下载 ItemAttachment 对象有任何见解。谷歌搜索有关 Graph API 的信息几乎总是关于 REST。我找到了一些使用这些库的示例代码,但它们都没有处理 ItemAttachments。

最佳答案

可以像这样请求附加到消息的项目( documentation ):

var attachmentRequest = graphClient.Me.MailFolders.Inbox.Messages[message.Id]
.Attachments[attachment.Id].Request().Expand("microsoft.graph.itemattachment/item").GetAsync();
var itemAttachment = (ItemAttachment)attachmentRequest.Result;
var itemMessage = (Message) itemAttachment.Item; //get attached message
Console.WriteLine(itemMessage.Body); //print message body

示例

如果附件是文件,演示如何获取附件并将​​其保存到文件中,如果附件是项目,则演示如何阅读附加的消息:
var request = graphClient.Me.MailFolders.Inbox.Messages.Request().Expand("attachments").GetAsync();
var messages = request.Result;
foreach (var message in messages)
{
foreach(var attachment in message.Attachments)
{
if (attachment.ODataType == "#microsoft.graph.itemAttachment")
{

var attachmentRequest = graphClient.Me.MailFolders.Inbox.Messages[message.Id]
.Attachments[attachment.Id].Request().Expand("microsoft.graph.itemattachment/item").GetAsync();
var itemAttachment = (ItemAttachment)attachmentRequest.Result;
var itemMessage = (Message) itemAttachment.Item; //get attached message
//...
}
else
{
var fileAttachment = (FileAttachment)attachment;
System.IO.File.WriteAllBytes(System.IO.Path.Combine(downloadPath,fileAttachment.Name), fileAttachment.ContentBytes);
}
}
}

关于c# - 使用 Microsoft.Graph API 检索 ItemAttachment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54208435/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com