c# - Microsoft Graph API - 无法访问单个消息(例外)
问题描述
我们有一些代码已经成功运行了几个月,而昨天突然之间,它失败了。
基本上,我们有一个进程通过 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,但出现同样的问题。
解决方案
我能够确认服务行为发生了变化,现在阻止了从不同邮箱访问电子邮件。这是不正确的行为,已得到修复。通过更改您的呼叫访问.Users[_metaData.MailBox].Messages[unreadMail.Id]
问题应该得到解决。
推荐阅读
- javascript - 如何使用 lodash _groupBy
- python - 如何使用Python重新排列字符串的字符,使其相邻的字符都不相同
- javascript - 使用 jQuery 函数延迟 MathJax
- google-sheets - 根据不同列中逗号分隔列表中的匹配 ID 连接 ID 列表
- android - 使用计时器使用 Volley 时出现内存不足错误
- python - project.project Odoo11 上的访问规则
- postgresql - 我正在尝试更新列,但出现了一些错误
- google-cloud-platform - 桶中图像的两个不同链接?有什么不同?
- php - 在单个 php 文件中选择多个 select2 以打开单独的模式,第二个不工作
- node.js - 有什么方法可以获取 shopify 帐户或应用程序或商店所有者的个人资料?