忽略EWS Java Api搜索过滤器

时间:2017-09-06 07:39:31

标签: java exchangewebservices

PropertySet itempropertyset = new PropertySet(BasePropertySet.FirstClassProperties);
itempropertyset.setRequestedBodyType(BodyType.Text);

ItemView view = new ItemView(10);
view.getOrderBy().add(ItemSchema.DateTimeReceived, SortDirection.Descending);
view.setPropertySet(new PropertySet(BasePropertySet.IdOnly, ItemSchema.Subject, ItemSchema.DateTimeReceived));
SearchFilter searchFilter = new SearchFilter.SearchFilterCollection(LogicalOperator.Or, new SearchFilter.IsEqualTo(EmailMessageSchema.IsRead, false));
FindItemsResults<Item> findResults = service.findItems(WellKnownFolderName.Inbox, searchFilter, view);

service.loadPropertiesForItems(findResults, itempropertyset);
System.out.println("Total number of items found: " + findResults.getTotalCount());

for (Item item : findResults) {
    System.out.println(item.getSubject());
    System.out.println(item.getBody());
}

目前在我连接到我们的交换机的应用程序中,我的要求是阅读未读邮件并附上文件。

但是搜索过滤器不起作用,我可以将Operator更改为AND,我可以将SortDirection从升序更改为降序但不会有任何区别。我的搜索过滤器目前设置为未读,但它会带回随机电子邮件。 ItemView设置为10,但带回了157封电子邮件。

来自println:Total number of items found: 157

有关我做错的任何建议吗? 亲切的问候

1 个答案:

答案 0 :(得分:0)

通过从searchFilterCollection更改为searchFilter并添加视图解决了此问题,这也解决了日期排序问题。

FindItemsResults<Item> findResults
                        = service.findItems(WellKnownFolderName.Inbox, new SearchFilter.IsEqualTo(EmailMessageSchema.IsRead, false), view);