2012-06-11 1 views
5

Ich kann E-Mails aus einem Postfach abrufen, das auf einem Betreff basiert. Ich bin nicht sicher, welches Format für das Abrufen von E-Mails basierend auf dem Empfangsdatum?Abrufen von E-Mails für ein bestimmtes Datum in C# mithilfe der Exchange-Webdienste

  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

Der oben angegebene Code sucht nicht nach Betreff. Es ruft Nachrichten mit 'EntryID' ab. – SliverNinja

Antwort

3

Werfen Sie einen Blick auf SearchFilter examples. Sie brauchen nur eine Filterbedingung auf ItemSchema.DateTimeReceived

+0

Danke SliverNinja! – acadia

+0

Ich bin jedoch nicht in der Lage zu bekommen, welches Format ich weitergeben soll. wenn ich '5/12/2012' versuche, retreis die Daten nicht – acadia

+1

[Schaue hier] (http://msdn.microsoft.com/en-us/library/ee693615.aspx), und suche nach "Datumsbereich Einschränkung " –

-2

Dies funktioniert.

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

Dies fragt das EWS nicht ab! Es wird sowieso alle E-Mails herunterladen. Es antwortet nicht, was in der Frage gefragt wurde. – Rahatur

16

Ich denke, wie SilverNinja Ihnen sagte, ist der richtige Weg. Sie sollten die Einzelteile so suchen:

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“ werden die ersten 1000 Elemente zurück, die am Tag recivied sind für Sie suchen.

Verwandte Themen