Как использовать $ value с помощью библиотеки Microsoft Graph в C# - PullRequest
0 голосов
/ 02 апреля 2020

Я пытаюсь получить вложения .eml из некоторых писем. На основании документации от https://docs.microsoft.com/en-us/graph/outlook-get-mime-message мне нужно использовать: GET / users / {id} / messages / {id} / attachments / {id} / $ value

Проблема здесь является то, что я не знаю, как сделать это с помощью библиотеки Microsoft.Graph в C#. Я не знаю, чтобы добавить это "значение $" к вызову. Ниже я прикрепил структуру C#, которую я сейчас использую для получения вложений для определенного c электронного письма. Любой совет может помочь. Спасибо.

return await _graphServiceClient.Me.Messages[emailId].Attachments.Request().GetAsync()

1 Ответ

0 голосов
/ 03 апреля 2020

В настоящее время SDK не поддерживает это простым способом. Обычно для добавления сегмента /$value к URL-адресу сгенерированного запроса вы получаете доступ к свойству Content в конструкторе запросов. Проблема в том, что generi c IAttachmentRequestBuilder не реализует это свойство, только FileAttachmentRequestBuilder.

Так что, чтобы это работало с текущим SDK, вам нужно сделать это следующим образом :

var msgId = "message-id";
var attId = "attachment-id";

var attachmentRequestBuilder = client.Me.Messages[msgId].Attachments[attId];
var fileRequestBuilder = new FileAttachmentRequestBuilder(
    attachmentRequestBuilder.RequestUrl, client);

Console.WriteLine($"Request URL: {fileRequestBuilder.Content.Request().RequestUrl}");
var stream = await fileRequestBuilder.Content.Request().GetAsync();

using(var reader = new StreamReader(stream))
{
    Console.WriteLine("Attachment contents:");
    while (!reader.EndOfStream)
    {
        var line = reader.ReadLine();
        Console.WriteLine(line);
    }
}

Я сообщил об этом людям из SDK.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...