2012-06-11 29 views
5

Puedo buscar correos electrónicos de un buzón de correo en función de un asunto. No estoy seguro de cuál es el formato para obtener correos electrónicos en función de la fecha de recepción.Recuperación de correos electrónicos para una fecha específica en C# mediante los servicios web de Exchange

  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

El código que proporcionó anteriormente no está buscando por tema. Está recuperando mensajes por 'EntryID'. – SliverNinja

Respuesta

3

Eche un vistazo a SearchFilter examples. Solo necesita una condición de filtrado en ItemSchema.DateTimeReceived

+0

Gracias SliverNinja! – acadia

+0

Sin embargo, no puedo obtener el formato que debo aprobar. cuando intento '12/05/2012' no está recuperando los datos – acadia

+1

[Mira aquí] (http://msdn.microsoft.com/en-us/library/ee693615.aspx), y busca "Restricción del rango de fechas" " –

-2

Esto funcionará.

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

¡Esto no consultará el EWS! Descargará todos los correos electrónicos de todos modos. No responde lo que se le preguntó en la pregunta. – Rahatur

16

Creo que la forma en que SilverNinja te dijo es la forma correcta. Usted debe buscar en los artículos de esta manera:

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" volverán los primeros 1000 elementos que se recivied en el día que busca.

Cuestiones relacionadas