Microsoft graph api Microsoft Graph |使用'获取消息;gt';过滤器充当';通用电气';
我正在Microsoft Graph中查询用户收件箱中的新邮件(电子邮件)。 我只想获取“新”消息,所以我使用gt过滤器,将我上次处理消息的时间传递给它。 我要访问的url是:Microsoft graph api Microsoft Graph |使用'获取消息;gt';过滤器充当';通用电气';,microsoft-graph-api,Microsoft Graph Api,我正在Microsoft Graph中查询用户收件箱中的新邮件(电子邮件)。 我只想获取“新”消息,所以我使用gt过滤器,将我上次处理消息的时间传递给它。 我要访问的url是: https://graph.microsoft.com/v1.0/Users/{my user id}/messages?$filter=receivedDateTime gt 2019-12-15T23:49:06Z 我得到的响应是一条消息,其receivedDateTime与我在查询中使用的消息相同(带有gt) 下面
https://graph.microsoft.com/v1.0/Users/{my user id}/messages?$filter=receivedDateTime gt 2019-12-15T23:49:06Z
我得到的响应是一条消息,其receivedDateTime
与我在查询中使用的消息相同(带有gt
)
下面是我从图中得到的json响应的相关部分:
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('my-user-id')/messages",
"value": [
{
"@odata.etag": "W/\"etag-replaced\"",
"id": "message-id-replaced",
"createdDateTime": "2019-12-15T23:49:05Z",
"lastModifiedDateTime": "2019-12-15T23:49:06Z",
"changeKey": "change-key-replaced",
"categories": [],
"receivedDateTime": "2019-12-15T23:49:06Z", // that's the weird part.
"sentDateTime": "2019-12-15T23:49:06Z",
"hasAttachments": false,.....
因此,似乎
gt
(大于)的行为就好像它是ge
(大于或等于)一样,这可能是一个错误吗?底层Exchange服务器以毫秒以下的精度存储该项(EWS允许您指定希望在返回的datetime中看到的精度,可能有一个Graph Preference标头(或者应该是),但我还没有找到它)。因此,从技术上讲,由于其精度,此项很可能大于查询日期。如果要查看邮件的实际精度,可以使用MAPI编辑器,如MFCMapi的OutlookSpy。然后,您可以查看PT_Systime值,即FileTime“8字节;表示自1601年1月1日起100纳秒间隔数的64位整数”请参见
解决方法只是在客户端对其进行过滤,或者在实际查询中包含毫秒(我同意这是一个可用性缺陷,因为99%的人会在查询中使用秒)