Microsoft Graph API-无法访问单个消息(异常)

时间:2019-09-12 21:23:27

标签: c# microsoft-graph microsoft-graph-sdks microsoft-graph-mail

我们有一些代码已经成功运行了几个月,昨天突然间,它失败了。

基本上,我们有一个过程,该过程通过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,但是会出现相同的问题。

1 个答案:

答案 0 :(得分:1)

我能够确认存在服务行为更改,该更改现在阻止了从其他邮箱访问电子邮件。这不是正确的行为,已得到修复。通过更改您对访问.Users[_metaData.MailBox].Messages[unreadMail.Id]的访问权限,问题应该可以解决。