以下代码返回零项。
EWSService = new ExchangeService(ExchangeVersion.Exchange2010_SP1);
EWSService.TraceListener = tr;
EWSService.TraceFlags = TraceFlags.DebugMessage | TraceFlags.EwsRequest | TraceFlags.EwsResponse;
EWSService.TraceEnabled = true;
EWSService.Credentials = new WebCredentials(user, psw,domain);
EWSService.Url = new Uri("https://----/EWS/Exchange.asmx");
FolderId id = Test(EWSService, "inbox", null);
Folder source = Microsoft.Exchange.WebServices.Data.Folder.Bind(EWSService, id);
SearchFilter> slist = new List<SearchFilter> ();
Add(new SearchFilter.IsEqualTo(EmailMessageSchema.From, "some@emailaddress.com"));
SearchFilter filter = new SearchFilter.SearchFilterCollection(LogicalOperator.Or, slist);
ItemView messageView = new ItemView(99);
FindItemsResults<Item> list = source.FindItems(filter,messageView);
当我在searchFilter中使用特定的电子邮件地址时,列表有时包含0个项目,即使文件夹中存在邮件项目。
当我没有将FindFilter与FindItems一起使用时,它会出现在列表中。
为什么SearchFilter无法正常工作?
答案 0 :(得分:1)
首先关闭。
如果您只想查找一个电子邮件地址
,则不需要Searchfilter列表<context-param>
<param-name>org.icefaces.disableDefaultErrorPopups</param-name>
<param-value>false</param-value>
</context-param>
现在提出一些建议:
我建议使用查询字符串而不是serchfilter。
SearchFilter> slist = new List<SearchFilter> ();
来源:https://msdn.microsoft.com/en-us/library/office/dn579420(v=exchg.150).aspx
不要在ItemView中拉99个项目而是拉20并使用分页
// Find all items where the From: contains "some@emailaddress.com".
string filter= "From:\"some@emailaddress.com\"";
3.仅加载您需要的属性。
ItemView messageView = new ItemView(20, 0, OffsetBasePoint.Beginning);
定义您想要搜索的深度
messageView.PropertySet = BasePropertySet.IdOnly;
下面的代码只是我过去使用findItems方法为自己的项目使用VB的一个例子......用于示范目的
messageView.Traversal = ItemTraversal.Shallow