我们有一些代码已经成功运行了几个月,而昨天突然之间,它失败了。
基本上,我们有一个进程通过 Graph API C# SDK (v1.12.0) 登录到邮箱,获取未读消息,遍历每条消息,进行一些处理,然后尝试将每条消息标记为“已读”。
以下是相关代码:
var graphserviceClient = new GraphServiceClient(_metaData.GraphBaseURL,
new DelegateAuthenticationProvider(
(requestMessage) =>
{
requestMessage.Headers.Authorization = new AuthenticationHeaderValue("bearer", accessToken);
requestMessage.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
requestMessage.Headers.Add("Prefer", "outlook.body-content-type='text'");
return Task.FromResult(0);
}));
var unreadMails = graphserviceClient
.Users[_metaData.MailBox]
.MailFolders
.Inbox
.Messages
.Request()
.Filter("isRead eq false")
.Top(1000)
.Select("Body, Subject")
.GetAsync()
.Result;
emailRetrievalCount = unreadMails.Count();
// Determine if any results were returned
if (unreadMails.Count > 0)
{
// Create loop to process each item in the newResult object
foreach (var unreadMail in unreadMails)
{
// Set the isRead flag of the message to true
var readMail = graphserviceClient
.Me
.Messages[unreadMail.Id] //BREAKS HERE!!!
.Request()
.Select("IsRead")
.UpdateAsync(new Message { IsRead = true })
.Result;
}
}
异常消息:
Microsoft.Graph.ServiceException:代码:ErrorInternalServerError\r\n消息:发生内部服务器错误。操作失败。,无法打开邮箱。
我们检查了邮箱或帐户的权限,没有任何改变。此外,这似乎不是权限问题,因为我们可以获取令牌、登录并获取消息列表。只是当我们尝试获取特定消息来更新“读取”状态时,它失败了。此外,我们尝试将 SDK 更新到最新版本 v1.19.0,但出现同样的问题。