Я написал программу, которая успешно использует API-интерфейс Graph для проверки почтового ящика и получения сообщений. Если сообщение содержит стандартное вложение (например, PDF, документ Word), тогда код работает. В отладке я вижу, что они рассматриваются как тип FileAttachment Однако, если сообщение содержит вложение, являющееся другим электронным письмом, или WAV-файл, являющийся сообщением голосовой почты (что мне кажется странным), тогда программа задыхается, потому что эти вложения имеют тип ItemAttachment
, и приведение не выполняется. Соответствующий код:
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.Graph
и Microsoft.Graph.Core
. Это библиотеки, которые я использую повсюду в своем коде для аутентификации и доступа к данным Office 365.
Итак, мне интересно, есть ли у кого-нибудь понимание того, как использовать эти библиотеки для доступа и загрузки объектов ItemAttachment. Поиск информации о Graph API почти всегда связан с REST. Я нашел пример кода с использованием этих библиотек, но ни один из них не касается ItemAttachments.