1

我们遇到了一个奇怪的问题(不一致),这似乎与 Graph 上获取消息端点的 $filter 功能有关。

我们回复通过他们的 internetMessageId 字段查询消息。这通常是可行的,但在某些情况下,我们已经看到结果集是空的(没有错误),奇怪的是同一条消息可以通过其主题或发件人的地址获取。

此 API 调用返回一个空结果: https://graph.microsoft.com/v1.0/users/<user_principal_name>/messages?$filter=internetMessageId eq '<CAPJZXvF23=Ut7ksuJzCV+dQa6Pjy+3+uRU7j0v-GLydAi974Rg@mail.gmail.com>'

此 API 调用有效: https://graph.microsoft.com/v1.0/users/<user_principal_name>/messages?$filter=sender/emailAddress/address eq '<sender_address>'

4

1 回答 1

1

我们对此进行了调查,这里的问题在于应用程序行为,而不是服务。如果应用程序根据 HTTP 编码实践正确编码了 URL 查询参数,则这两个查询都按预期工作。

在第一个请求中,值中有应用程序在发送请求之前没有编码的+字符;internetMessageId该服务将它们解码为空格,这就是查询返回空结果的原因。

当查询字符串正确时,会按预期返回正确的结果。

我们建议应用始终对请求 URL 进行编码。

于 2019-04-04T16:02:44.807 回答