我正在尝试使用单个 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 消息:批量有效负载格式无效。
我需要更改什么才能使其正常工作,还是根本不可能?
以下是如何使用 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
}