如何使用 Microsoft Graph SDK 的批量请求下载多个电子邮件流?

问题描述 投票:0回答:1

我正在尝试使用单个 Microsoft Graph SDK 调用下载多封电子邮件。

这是我正在使用的代码:

   foreach (var emailId in emailIds)
   {
       var request = graphServiceClient.Users[EmailAddress].Messages[emailId].Request();
       request.Headers.Add(new HeaderOption("Accept", "message/rfc822"));

       batchRequestContent.AddBatchRequestStep(request);
   }

   var result = await graphServiceClient.Batch.Request().PostAsync(batchRequestContent, cancellationToken);

此调用会导致异常:

Microsoft.Graph.ServiceException:'代码:BadRequest 消息:批量有效负载格式无效。

我需要更改什么才能使其正常工作,还是根本不可能?

c# batch-processing microsoft-graph-sdks
1个回答
0
投票

以下是如何使用 API 版本 5 批量获取消息内容流的示例。 恢复流的关键是使用函数

GetResponseStreamByIdAsync

var batch = new BatchRequestContentCollection(_graphClient);
var requestIds = new List<string>();
foreach (var emailGraphId in emailGraphIds)
{
    var request = _graphClient
        .Users[userId]
        .Messages[messageId]
        .Content.ToGetRequestInformation();
    requestIds.Add(await batch.AddBatchRequestStepAsync(request));
}

var batchResponse = await _graphClient.Batch.PostAsync(batch);
foreach (var requestId in requestIds)
{
    var response = await batchResponse.GetResponseStreamByIdAsync(requestId);
    // do something with response
}
© www.soinside.com 2019 - 2024. All rights reserved.