什么是 ErrorMessage PerFolderCountReceive QuotaExceeded?

What is ErrorMessagePerFolderCountReceiveQuotaExceeded?

我在 me/MailFolders/{folder_id}/messages 上执行 GET,通过 Office 365 REST API 同步 Office 365 邮件文件夹。对于两个不同的帐户,我最近收到了 500 对这些 GET 的响应,错误代码为 ErrorMessagePerFolderCountReceiveQuotaExceeded 和错误消息 "The number of received messages has exeeded the quota for the folder."(他们的错别字,不是我的。)

我找不到关于此错误的任何文档。这是什么意思?我应该怎么做才能解决这种情况?

我似乎也找不到它的任何文档。

从错误信息来看,这似乎与 Exchange Online 的 "Maximum number of messages per mailbox folder" 限制有关。您知道该文件夹是否包含超过 100 万封邮件吗?

https://technet.microsoft.com/en-us/library/exchange-online-limits.aspx#MailboxFolderLimits


我想我的另一个想法是您在太短的时间内收到了太多消息。建议将端点 GET https://outlook.office365.com/api/v2.0/me/MailFolders('{folder_id}')/messages$deltaToken$skipToken 一起使用以跳过先前同步的消息。

https://msdn.microsoft.com/en-us/office/office365/api/mail-rest-operations#synchronize-messages

当您通过 Outlook REST API 同步到 Exchange 文件夹时,您会向它传递一个同步令牌。作为响应,API returns 一个新的同步令牌和一组更改。并且客户端应该在下一个同步请求中发回新令牌。

对于支持同步的大多数系统,在后续请求中使用过时的同步令牌(即已发送到服务器一次的令牌)通常会成功而不会出现任何问题。 Exchange 似乎是这样工作的……在您执行的前 999,999 次中。在第 1,000,000 次(以及之后的每次),您会收到 ErrorMessagePerFolderCountReceiveQuotaExceeded。这是(我认为)因为 Exchange 会跟踪它发出的每个令牌,并在每次用于同步时更新其存储中的令牌。如果客户端使用过时令牌​​,Exchange 会将其视为新客户端,并将该过时令牌作为新条目添加到其活动令牌列表中。该活动令牌列表最多可以有 1,000,000 个条目。 ErrorMessagePerFolderCountReceiveQuotaExceeded 是表示 Exchange 的活动令牌列表已溢出的神秘错误。