2013-03-21 10 views
0

Im, использующий управляемый API EWS для связи между моим проектом C# и нашим сервером Exchange 2010. Я использую этот код, чтобы получить все письма в папке «Входящие» сейчас и три дня назад.Exchange EWS Managed 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

Вы что-нибудь пробовали? Там 'SearchFilter' для' FindItems', как описано здесь >> http://msdn.microsoft.com/en-us/library/jj221817(v=exchg.80).aspx – banging

+0

Конечно, я пробовал! В противном случае я бы не задал этот вопрос. Вы, кажется, тоже не нашли его? –

ответ

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); 
Смежные вопросы