在文件夹

时间:2016-05-27 14:32:38

标签: c# exchangewebservices

以下代码返回零项。

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无法正常工作?

1 个答案:

答案 0 :(得分:1)

首先关闭。

如果您只想查找一个电子邮件地址

,则不需要Searchfilter列表
<context-param>
  <param-name>org.icefaces.disableDefaultErrorPopups</param-name>
  <param-value>false</param-value>
</context-param>

现在提出一些建议:

  1. 我建议使用查询字符串而不是serchfilter。

    SearchFilter> slist = new List<SearchFilter> ();
    

    来源:https://msdn.microsoft.com/en-us/library/office/dn579420(v=exchg.150).aspx

  2. 不要在ItemView中拉99个项目而是拉20并使用分页

     // Find all items where the From: contains "some@emailaddress.com".
      string filter= "From:\"some@emailaddress.com\"";
    
  3. 3.仅加载您需要的属性。

     ItemView messageView = new ItemView(20, 0, OffsetBasePoint.Beginning);
    
    1. 定义您想要搜索的深度

      messageView.PropertySet = BasePropertySet.IdOnly;
      
    2. 下面的代码只是我过去使用findItems方法为自己的项目使用VB的一个例子......用于示范目的

           messageView.Traversal = ItemTraversal.Shallow