2013-03-21 68 views
0

使用EWS託管API在我的c#項目和Exchange 2010服務器之間進行通信。 我使用此代碼從現在起和三天後收到收件箱中的所有郵件。Exchange EWS託管API 2.0按日期獲取

var ews = new ExchangeService(ExchangeVersion.Exchange2010_SP1); 
    ews.Credentials = new NetworkCredential(usr, psw, dmn); 
    ews.AutodiscoverUrl(url); 

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

    ItemView view = new ItemView(int.MaxValue); 
    FindItemsResults<Item> findResults; 
    view.PropertySet = itempropertyset; 

    do 
    { 
     findResults = ews.FindItems(WellKnownFolderName.Inbox, view); 

     foreach (Item item in findResults.Items) 
     { 
      if (item.DateTimeCreated < DateTime.Now.AddDays(-3)) continue; 

      item.Load(itempropertyset); 

      var message = EmailMessage.Bind(ews, item.Id, 
       new PropertySet(BasePropertySet.FirstClassProperties, ItemSchema.Attachments)); 

      string to = message.ToRecipients[0].Address.ToLower(); 
      string body = item.Body; 
     } 

     view.Offset += findResults.TotalCount; 
    } while (findResults.MoreAvailable); 

現在的問題。我想改善這條線if (item.DateTimeCreated < DateTime.Now.AddDays(-3)) continue;,因爲當我使用這個時,api會從收件箱中獲取所有的信息,並且如果它的大三天那麼就繼續。我想在代碼的前面指定這個過濾器,所以api不必處理所有消息。

+0

您是否嘗試過任何操作?這裏描述的FindItems有一個'SearchFilter' >> http://msdn.microsoft.com/en-us/library/jj221817(v=exchg.80).aspx – banging 2013-03-21 20:36:20

+0

當然,我已經嘗試過了!否則,我不會在這裏問這個問題。你似乎也沒有找到它? – 2013-03-21 21:18:45

回答

9

如果我理解正確的問題,這應該工作。您可以在此處查看所有搜索過濾器:EWS Search Filters

ItemView view = new ItemView(int.MaxValue); 
FindItemsResults<Item> findResults; 
view.PropertySet = itempropertyset; 

SearchFilter searchFilter = 
    new SearchFilter.IsGreaterThan(ItemSchema.DateTimeReceived, DateTime.Now.AddDays(-3)); 

findResults = service.FindItems(WellKnownFolderName.Inbox, searchFilter, view); 
相關問題