Microsoft Graph 不返回带有日期筛选器的消息

Microsoft Graph not returning messages with a date filter

我正在使用 Microsoft Graph 尝试以下请求:

https://graph.microsoft.com/v1.0/me/messages?$filter=receivedDateTime lt 2016-03-07T16:55:39Z

在这个例子中,我试图检索在提供的日期(实际上是今天)之前收到的所有电子邮件。

但是,Microsoft Graph API returns 只有一条消息针对此请求,这是我在我的帐户上收到的第一条消息,尽管还有许多其他电子邮件符合此条件。请注意 le 也遇到同样的问题。

我认为这是一个错误并在此处提出它以提高可见性,但是对于我的示例的解决方法或问题的任何建议都将不胜感激。

我能够通过按 receivedDateTime DESC 对结果进行排序来解决这个问题。

试试这个,对我有用:

me/messages?$filter=receivedDateTime lt 2016-03-07T16:55:39Z&$orderby=receivedDateTime desc

您描述的是一个已知问题。发生的事情是:

由于一些实施细节,消息、事件、联系人和其他项目类型可以一起存在于一个文件夹中。由于 Messages 集合只返回 Messages,我们必须跳过其他项目。目前,您会看到我们什么时候跳过项目作为差距。一个包含 10 个项目的页面,其中填充的项目少于 10 个(但仍包含 @odata.nextLink)是您识别它的方式。

现在,对于大多数实际邮件文件夹(例如 https://graph.microsoft.com/v1.0/me/MailFolders/Inbox/messages),这通常不会发生,但您查询的是 https://graph.microsoft.com/v1.0/me/messages 集合,它将查询范围限定到您的整个邮箱。最终结果是可能有很多满足您条件的项目不是消息。

我们正在努力改善这种体验,但目前,您应该能够翻阅 @odata.nextLink 秒,直到您获得所需的所有数据。