如何使用MS Graph Java SDK为邮件查询配置search参数替代filter
解决方法
你可以直接调用Java SDK提供的search()方法传入搜索条件,替换原有的filter()调用即可,修改后的代码如下:
IMessageCollectionRequest eventRequest = graphClient.getGraphClient().users(user.getEmail()).messages() .buildRequest(new HeaderOption("Prefer", "outlook.body-content-type=\"text\"")) .select("body,subject,toRecipients,ccRecipients,CreatedDateTime,conversationId,from"); IMessageCollectionPage eventPage = eventRequest // 替换filter为search,搜索语句需要包裹转义后的双引号 .search("\"recipients:@xyz.com\"") // 对应URL中的$top=1000参数 .top(1000) .get();
注意事项
- 搜索参数必须用双引号包裹,Java代码中需要对双引号做转义处理
- 不要同时保留
filter()和search()调用,MS Graph不支持两个参数同时生效 - 如果需要拼接多个搜索条件,直接在
search的参数字符串中拼接即可,例如搜索收件人包含@xyz.com且主题含「账单」的语句为"\"recipients:@xyz.com subject:账单\""
内容的提问来源于stack exchange,提问作者Sadashiv
相关产品推荐
相关产品推荐

