1

我正在尝试获取给定InternetMessageID的电子邮件列表。

对于一个给定的 InternetMessageID,我可以按照 Outlook 文档中提供的语法检索相应的邮件

 "https://outlook.office365.com/api/beta/me/messages?$filter=SingleValueExtendedProperties/any(ep:  ep/PropertyId eq 'String 0x1035' and ep/Value eq '<12.FF.36768.EE3E3365@twitter.com>' )";

现在让我们说我想用相同的请求检索两封邮件,但我没有设法获得成功的语法。

例如

 "https://outlook.office365.com/api/beta/me/messages?$filter=SingleValueExtendedProperties/any(ep:  ep/PropertyId eq 'String 0x1035' and (ep/Value eq '<12.FF.36768.EE3E3365@twitter.com>' or ep/value eq 'anothermailid@toto.com'))";

不起作用。BadRequest与消息一起返回

The filter expression for $filter does not match to a single extended property and a value restriction.

我尝试了许多分组组合,并使用此问题$expand中建议的语句进行测试。有没有办法使用 Graph API 的 Outlook Web Api 执行此类请求?

4

1 回答 1

3

我也试过了,我收到了一条信息更丰富的错误消息:

{
  "error": {
    "code": "ErrorInvalidUrlQueryFilter",
    "message": "The filter expression for $filter on property ExtendedProperty only allows 
               [and] and [eq] operators. The equality can only be specified between 
               'PropertyId' and a constant or 'Value' and a constant (for example: 
               PropertyId eq 'value')."
  }
}

更新:与我的工程团队核实,此错误是指 ANY 语句中的内容。你不能在那里使用 OR 。因此,要完成这项工作,您需要两个由 OR 连接的单独 ANY 语句:

https://outlook.office.com/api/beta/me/messages?$filter=
  SingleValueExtendedProperties/any(ep: ep/PropertyId eq 'String 0x1035' 
                                    and ep/Value eq 'someid@somedomain') or 
  SingleValueExtendedProperties/any(ep: ep/PropertyId eq 'String 0x1035' 
                                    and ep/Value eq 'otherid@otherdomain')
于 2015-11-30T13:28:08.173 回答