7

başlık ben bir gelen kutusu, [email protected], Ayrıca [email protected]Exchange Web Hizmetleri (EWS) API takma

, bunun için bir takma olduğu, karşılığında böylece tüm e-postaları kurdunuz "Kime" news Adres, hello gelen kutusuna.

İdeal olarak, EWS'yi kullanarak hangi takma e-postanın gönderileceğini size bildirmek istiyorum.

Ben [email protected] bir e-posta göndermek ve Microsoft Outlook kullanarak mesajın İnternet başlıklarını incelemek

, To: başlık görmek istediğim tam olarak ne olduğu To: Hello <[email protected]> okur. Ancak, EWS kullanarak, iletinin ToRecipients özelliğine baktığımda, bildirilen e-posta adresi her zaman birincil SMTP adresininkidir. Ayrıca Webservices.Data.Item öğesinin InternetMessageHeaders özelliği, To: özelliği içermiyor. Ayrıca iletinin tüm özelliklerini incelemek için EWSEditor kullanarak doğru adresi göremiyorum. exportmessage dışında

this forum post cevabı önermek gibi görünüyor,

... bir mesaj alıcıları koleksiyonunda saklanan gönderilen gerçek e-posta adresi hakkında bilgi Erişemediğiniz () EWS'de ...

nasıl yüzden doğru To: adresini bulabilirsiniz programlama yoluyla bunu hakkında gitmek?

+0

Ben aynı sorun koştu ettik, hiç bir çözüm buldular? – HeavenCore

+0

@HeavenCore, maalesef, e-postayı nasıl işleyeceğimizi bildirmek için e-posta konusu satırına bir etiket ekledik. Örneğin. "blah blah #news" konulu bir haber, bir haber öğesi olarak işlenecektir. – RYFN

+1

Dang, yine de teşekkürler, eğer bir şey bulursam, size bildireceğim. – HeavenCore

cevap

6

Bu benim için çalışıyor:

private static string GetToAddress() 
    { 
     ExchangeService exService = new ExchangeService(); 
     exService.Credentials = new NetworkCredential("username", "password", "domain"); 
     exService.Url = new Uri("https://youraddress/EWS/Exchange.asmx"); 

     ExtendedPropertyDefinition PR_TRANSPORT_MESSAGE_HEADERS = new ExtendedPropertyDefinition(0x007D,MapiPropertyType.String); 
     PropertySet psPropSet = new PropertySet(BasePropertySet.FirstClassProperties) 
            {PR_TRANSPORT_MESSAGE_HEADERS, ItemSchema.MimeContent}; 

     FindItemsResults<Item> fiResults = exService.FindItems(WellKnownFolderName.Inbox, new ItemView(1)); 
     foreach (Item itItem in fiResults.Items) 
     { 
      itItem.Load(psPropSet); 
      Object valHeaders; 
      if (itItem.TryGetProperty(PR_TRANSPORT_MESSAGE_HEADERS, out valHeaders)) 
      { 
       Regex regex = new Regex(@"To:.*<(.+)>"); 
       Match match = regex.Match(valHeaders.ToString()); 
       if (match.Groups.Count == 2) 
        return match.Groups[1].Value; 
      } 
      return ToAddress; 
     } 
     return "Cannot find ToAddress"; 
    } 

kod şöyledir: http://social.technet.microsoft.com/Forums/en-au/exchangesvrdevelopment/thread/1e5bbde0-218e-466e-afcc-cb60bc2ba692

+0

Benim için çalıştı bir posta kutusuna gelmesi iken, amaçlanan adresin kim olduğunu bilmek gerektiğinden bu çok can sıkıcı. Birden fazla alıcı ve birden fazla satır için 'Kime:' başlığını ayırmak için biraz daha mantık eklemem gerekiyordu. – Scott

+0

Bu çözümle ilgili deneyimleriniz var mı? –

+0

Bunun neden cevap olmadığından emin değilim. Tam olarak buna ihtiyacım vardı. – Miles