2013-07-25 6 views
8

Piszę system wsparcia i jest to mój pierwszy raz przy użyciu EWS. Do tej pory z powodzeniem odniosłem sukces. Mogę wyodrębnić potrzebne informacje. Wyślij emaisl i wszystko działa świetnie. Mam jeden mały ból głowy. Czy istnieje sposób sprawdzenia, czy wiadomość e-mail jest w rzeczywistości odpowiedzią? Podstawową ideą aplikacji jest to, że ktoś wysyła e-mail. Odpowiadamy i nadajemy im numer referencyjny. Jest to zrobione i działa świetnie. Teraz, jeśli odpowiedzą na ten sam adres, musimy zalogować go nieco inaczej w naszej bazie danych. w ten sposób potrzebuję magicznego sposobu, aby powiedzieć, czy wiadomość e-mail jest odpowiedzią. Do tej pory utknąłem.Czy istnieje sposób sprawdzenia, czy wiadomość e-mail jest odpowiedzią/odpowiedzią za pomocą ews C#?

Wszelkie sugestie będą bardzo mile widziane, ponieważ jestem nowy w branży programistycznej i do tej pory wyszukiwanie nie przyniosło żadnych korzyści. Załączam tutaj fragment kodu:

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

można zrobić 'msg.Subject.Contains ("RE")' .. Niestety nie może być pomocne +1 chociaż – Sayse

+0

w rzeczywistości, że jest to dobry pomysł. .. Dlaczego nie pomyślałem o tym ... Prawdopodobnie pozbawienie snu. teoretycznie mogę spróbować z tym skończyć. miejmy nadzieję, że działa trochę magii ... – KapteinMarshall

+0

Haha Żartowałem, ponieważ ma oczywiste ograniczenia. jeśli szukasz bezpośredniej odpowiedzi, możesz zrobić 'StartsWith (" RE: ")' jak sądzę, ale jestem pewien, że jest lepszy sposób, jeśli to możliwe – Sayse

Odpowiedz

1

Ok. Więc z komentarzy. Wydaje się, że tak naprawdę nie ma definitywnego sposobu. Komentarze ludzi pomogły mi uzyskać tę odpowiedź i zamknąć ten wątek. Będę redagować i zamieścić tutaj. Więc najpierw. Dziękuję za wszystkie odpowiedzi.

Najprostszym sposobem jest podanie dobrego numeru referencyjnego w temacie. Takich jak "Supp-1234"

Teraz w kodzie możemy sprawdzić ten numer referencyjny w nagłówku. Jeśli tam jest. Najprawdopodobniej jest to odpowiedź. Sprawdzanie RE jest również opcją, ale nieco mniej skuteczne. Opóźnienie polega na tym, że klienci mogą usunąć numer referencyjny/RE z nagłówka tematu. Dla tych gości. Biedny, twój problem nie zostanie zarejestrowany. lub wiesz. rób cokolwiek. :)

Jeszcze raz dziękuję za wszystkie odpowiedzi. Bardzo mi pomogliście!

5

InReplyTo to ciąg znaków zawierający identyfikator elementu, którego dotyczy ta wiadomość. Jeśli jest pusta, wiadomość nie jest odpowiedzią.

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

Dalsze informacje: MSDN InReplyTo

+0

Czy dotyczy to tylko MS Exchange? – GETah

+0

InReplyTo jest puste, jeśli użytkownik zmieni temat, odpowiadając na wiadomość e-mail – Chethan

Powiązane problemy