2012-06-11 14 views
5

Sono in grado di recuperare e-mail da una casella di posta in base a un oggetto. Non sono sicuro del formato per il recupero delle email in base alla data di ricezione?Recupero di e-mail per una data specifica in C# utilizzando Exchange Web Services

  string message = string.Empty; 
      Item item = Item.Bind(exService, messageID, PropertySet.FirstClassProperties); 

      if (item is EmailMessage) 
      { 
       EmailMessage em = (EmailMessage)item; 

       string strMsg = string.Empty; 
       //strMsg = strMsg + item.Id.ToString(); 
       //strMsg = strMsg + item.DateTimeReceived; 
       strMsg = strMsg + "*********************** New Fiscal Email received on " + item.DateTimeReceived +" ************************************" + Environment.NewLine; 

       if (em.Body.Text.Contains("BRANDON")) 
       { 
        strMsg = strMsg + em.Body.Text.ToString(); 
       } 
       strMsg = strMsg + "*********************** End of Email Body ************************************" + Environment.NewLine; 
       message = strMsg; 

      } 
+0

Il codice che hai fornito sopra non cerca per argomento. Sta recuperando i messaggi con 'EntryID'. – SliverNinja

risposta

3

Date un'occhiata a SearchFilter examples. Hai solo bisogno di una condizione di filtro su ItemSchema.DateTimeReceived

+0

Grazie a SliverNinja! – acadia

+0

Tuttavia, non sono in grado di ottenere quale formato dovrei passare. quando provo '5/12/2012' non sta recuperando i dati – acadia

+1

[Guarda qui] (http://msdn.microsoft.com/en-us/library/ee693615.aspx), e cerca "Limitazione intervallo di date" " –

-2

Questo funzionerà.

if (em.DateTimeReceived.Equals(**Date you want to search**)) 
       { 
        strMsg = strMsg + em.Body.Text.ToString(); 
       } 
+1

Questo non interrogherà l'EWS! Scaricherà comunque tutte le e-mail. Non risponde a ciò che è stato chiesto nella domanda. – Rahatur

16

Penso che il modo in cui SilverNinja ti ha detto sia la strada giusta. Si dovrebbe cercare gli elementi in questo modo:

DateTime searchdate = new DateTime (2012,7,6) //Year, month, day 
SearchFilter greaterthanfilter = new SearchFilter.IsGreaterThanOrEqualTo(ItemSchema.DateTimeReceived, searchdate); 
SearchFilter lessthanfilter = new SearchFilter.IsLessThan(ItemSchema.DateTimeReceived, searchdate.AddDays(1)); 
SearchFilter filter = new SearchFilter.SearchFilterCollection(LogicalOperator.And, greaterthanfilter, lessthanfilter); 
Folder folder = Folder.Bind(this.m_Service, WellKnownFolderName.MsgFolderRoot); //Or the folder you want to search in 
FindItemsResults<Item> results = folder.FindItems(filter, new ItemView(1000)); 

"results.Items" torneranno i primi 1000 elementi che sono recivied al giorno che si sta cercando.

Problemi correlati