2013-07-25 12 views
8

Sto scrivendo un sistema di supporto e questa è la mia prima volta che uso EWS. Finora ho avuto abbastanza successo con esso. Posso estrarre le informazioni di cui ho bisogno. Invia emaisl e tutto funziona alla grande. Ho un piccolo mal di testa. C'è un modo per dire se un'e-mail è in realtà una risposta? L'idea di base dell'app è qualcuno che invia un'email. Rispondiamo e diamo loro un numero di riferimento. Questo è fatto e funziona alla grande. Ora se rispondono a questo stesso indirizzo, dobbiamo registrarlo un po 'diverso nel nostro database. quindi ho bisogno di un modo magico per dire se l'e-mail è una risposta. Finora sono rimasto bloccato.C'è un modo per determinare se una email è una risposta/risposta usando ews C#?

Qualsiasi suggerimento sarà molto apprezzato in quanto sono nuovo nel settore della programmazione e finora googling non ha trovato nulla di utile. Includo qui una sezione di codice

FindItemsResults<Item> findResults = service.FindItems(WellKnownFolderName.Inbox, view); 

     foreach (Item myItem in findResults.Items.Where(i => i is EmailMessage)) 
     { 
      var mailItem = myItem as EmailMessage; 
      if (!mailItem.IsRead) 
      { 
       // load primary properties and get a text body type 
       mailItem.Load(propertySet); 
       // Update the item to isRead in email 
       mailItem.IsRead = true; 
       mailItem.Update(ConflictResolutionMode.AutoResolve); 

       //Check if it is a reply and mark the msg as such 

       // add message to list 
       SupportEmailMessage msg = new SupportEmailMessage(); 
       msg.Subject = mailItem.Subject; 
       msg.MessageBody = mailItem.Body.Text; 
       msg.DateSent = mailItem.DateTimeSent; 
       msg.Sender = mailItem.Sender.Address; 
       toReturnList.Add(msg); 
      } 

     } 
+1

si poteva fare 'msg.Subject.Contains ("RE:")' .. scusate non essere di aiuto +1 se – Sayse

+0

In realtà questa è una buona idea. .. Perché non ci ho pensato ... Probabilmente privazione del sonno. in teoria posso provare a correre con questo. spero di lavorare un po 'di magia ... – KapteinMarshall

+0

Haha stavo scherzando perché ha dei limiti evidenti. Se stai cercando risposte dirette puoi fare 'StartsWith (" RE: ")' credo, ma sono sicuro che ci sia un modo migliore se è possibile – Sayse

risposta

1

Ok. Quindi dai commenti. Sembra che non ci sia davvero un modo definitivo. I commenti delle persone mi hanno aiutato a ottenere questa risposta e a chiudere questa discussione. Lo riformulerò e lo pubblicherò qui. Quindi prima. Grazie per tutte le tue risposte.

Il modo più semplice è includere un buon numero di riferimento nell'oggetto. Ad esempio "Supp-1234"

Ora nel codice è possibile verificare il numero di riferimento nell'intestazione. Se è lì È molto probabile una risposta. Anche il controllo dell'IR è un'opzione, ma un po 'meno efficace. Il problema è che i clienti possono rimuovere il numero di riferimento/RE dall'intestazione del soggetto. Per quei ragazzi. Poverino, il tuo problema non verrà registrato. o lo sai. fare qualsiasi cosa. :)

Grazie ancora a tutte le risposte. Voi ragazzi mi avete davvero aiutato molto!

5

InReplyTo è un valore stringa che contiene l'identificativo dell'articolo a cui questo messaggio è una risposta. Se è nullo, il messaggio non è una risposta.

var mailItem = myItem as EmailMessage; 
if (mailItem.InReplyTo != null) 
{ 
    // this is a reply message 
    . 
    . 
    . 
} 

Ulteriori informazioni: MSDN InReplyTo

+0

Questo vale solo per MS Exchange vero? – GETah

+0

InReplyTo è vuoto, se l'utente cambia argomento durante la risposta a un'email – Chethan

Problemi correlati