2017-09-06 110 views
0
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()); 
} 

当前在应用程序中,我连接到我们的交换机,我的要求是读取未读邮件并获取附件。EWS Java Api搜索过滤器被忽略

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

从println的:Total number of items found: 157

什么,我做错了什么建议? 亲切的问候

回答

0

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

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