无法在Microsoft Graph Api中按收件人筛选邮件.一个或多个无效节点

Dav*_*ave 20 odata microsoft-graph

我试图获取由Microsoft Graph API收件人筛选的邮件列表.我用于请求的网址是:

https://graph.microsoft.com/beta/me/messages?$filter=toRecipients/any(r: r/emailAddress/address eq '[Email Address]')

但我得到的是这个回应:

{
   "error": {
        "code": "ErrorInvalidUrlQueryFilter",
        "message": "The query filter contains one or more invalid nodes.",
        "innerError": {
            "request-id": "7db712c3-e337-49d9-aa8d-4a5d350d8480",
            "date": "2016-09-28T16:58:34"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

一个成功的请求应该是这样的(我已经省略了更多的数据).

{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#users('99999999-9999-9999-9999-999999999999')/messages",
    "@odata.nextLink": "https://graph.microsoft.com/beta/me/messages?$skip=10",
    "value": [
        {
            "toRecipients": [
                {
                    "emailAddress": {
                        "name": "[Name]",
                        "address": "[Email Address]"
                    }
                }
            ],
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

如果我删除过滤器,请求有效,并且我能够使用更简单的过滤器执行请求.

我的网址有问题,还是有另外一种方式来提出请求?

小智 9

经过几个小时的寻找解决方案后,我在office365文档中发现该属性toRecipients不可过滤:

https://msdn.microsoft.com/en-us/office/office365/api/complex-types-for-mail-contacts-calendar#MessageResource

我想在图 api 中也是一样的。所以唯一的解决办法就是使用搜索。


egg*_*m0n 5

发出请求的另一种方法可能是不使用过滤器,而是使用搜索,具体取决于您想要的内容(并且您可能已经尝试过此操作):

https://graph.microsoft.com/beta/me/messages?$search="to:[Email Address]"