Microsoft Graph API - 无法访问单个消息(异常)
Microsoft Graph API - cannot access individual message (exception)
我们有一些代码几个月来一直运行成功,昨天突然失败了。
基本上,我们有一个通过 Graph API C# SDK (v1.12.0) 登录邮箱的过程,获取未读邮件,遍历每个邮件,进行一些处理,然后尝试标记每条消息为 "read".
相关代码如下:
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: Code: ErrorInternalServerError\r\nMessage: An internal server error occurred. The operation failed., Cannot open mailbox.
我们检查了邮箱或帐户的权限,没有任何变化。此外,这似乎不是权限问题,因为我们可以获得令牌、登录并正常获取消息列表。只是当我们尝试获取特定消息以更新 "Read" 状态时,它失败了。另外,我们尝试将SDK更新到最新版本v1.19.0,但还是出现了同样的问题。
我能够确认服务行为发生了变化,现在阻止从不同邮箱访问电子邮件。这是不正确的行为,已得到修复。通过更改访问 .Users[_metaData.MailBox].Messages[unreadMail.Id]
的调用,问题应该得到解决。
我们有一些代码几个月来一直运行成功,昨天突然失败了。
基本上,我们有一个通过 Graph API C# SDK (v1.12.0) 登录邮箱的过程,获取未读邮件,遍历每个邮件,进行一些处理,然后尝试标记每条消息为 "read".
相关代码如下:
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: Code: ErrorInternalServerError\r\nMessage: An internal server error occurred. The operation failed., Cannot open mailbox.
我们检查了邮箱或帐户的权限,没有任何变化。此外,这似乎不是权限问题,因为我们可以获得令牌、登录并正常获取消息列表。只是当我们尝试获取特定消息以更新 "Read" 状态时,它失败了。另外,我们尝试将SDK更新到最新版本v1.19.0,但还是出现了同样的问题。
我能够确认服务行为发生了变化,现在阻止从不同邮箱访问电子邮件。这是不正确的行为,已得到修复。通过更改访问 .Users[_metaData.MailBox].Messages[unreadMail.Id]
的调用,问题应该得到解决。