7

के लिए शीर्षक मैं एक इनबॉक्स विदेशी मुद्रा में [email protected] इतना करने के लिए सभी ईमेल की स्थापना की है "के लिए", [email protected]Exchange वेब सेवाओं (EWS) एपीआई उर्फ ​​

इसके अतिरिक्त, इस के लिए एक उपनाम है, news पता hello इनबॉक्स में समाप्त होता है।

आदर्श रूप में, मैं यह बताने में सक्षम होना चाहता हूं कि ईडब्ल्यूएस का उपयोग करके ईमेल को कौन सा उपनाम भेजा गया है।

जब मैं [email protected] को एक ईमेल भेजें, और संदेश माइक्रोसॉफ्ट आउटलुक का उपयोग करने का इंटरनेट हेडर की जांच, To: हैडर पढ़ता To: Hello <[email protected]> जो वास्तव में क्या मैं देखना चाहता हूँ।

हालांकि, ईडब्ल्यूएस का उपयोग करते हुए, जब मैं संदेश की ToRecipients संपत्ति को देखता हूं, तो सूचित ईमेल पता हमेशा प्राथमिक SMTP पते का होता है। इसके अलावा InternetMessageHeaders Webservices.Data.Item की संपत्ति में To: संपत्ति नहीं है। संदेश के सभी गुणों की जांच के लिए मुझे EWSEditor का उपयोग करके सही पता नहीं लग रहा है।

this forum post का जवाब है कि सुझाव देने के लिए लगता है,

... वास्तविक ईमेल पते के बारे में जानकारी संदेश के प्राप्तकर्ताओं संग्रह में संग्रहीत किया जाता भेज दिया जाता है, जो आप नहीं पहुंच सकते (exportmessage के बाहर) EWS में ...

मैं कैसे प्रोग्राम के ऐसा करने तो मैं सही To: पते पा सकते हैं के बारे में जाना होगा?

+0

मैं ठीक उसी समस्या का सामना किया है, तो आप कभी भी एक समाधान मिला? – HeavenCore

+0

@ हेवनकॉर, दुर्भाग्यवश नहीं, हमने ईमेल ऐप को संसाधित करने के लिए हमारे ऐप को बताने के लिए ईमेल विषय पंक्ति में हैशटैग जोड़ना समाप्त कर दिया। जैसे "ब्ला ब्ला # न्यूज़" का विषय एक समाचार वस्तु के रूप में संसाधित किया जाएगा। – RYFN

+1

डांग, वैसे भी, अगर मुझे कुछ मिल जाए तो मैं आपको बता दूंगा। – HeavenCore

उत्तर

6

यह मेरे लिए काम करता है:

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"; 
    } 

कोड से है: http://social.technet.microsoft.com/Forums/en-au/exchangesvrdevelopment/thread/1e5bbde0-218e-466e-afcc-cb60bc2ba692

+0

में मेरे लिए काम करते थे। मुझे एकाधिक प्राप्तकर्ताओं और एकाधिक लाइनों के लिए 'To:' शीर्षलेख को पार्स करने के लिए थोड़ा और तर्क जोड़ने की आवश्यकता थी। – Scott

+0

इस समाधान के साथ कोई अनुभव? –

+0

मुझे यकीन नहीं है कि यह जवाब क्यों नहीं है। वास्तव में काम किया कि मुझे इसकी आवश्यकता कैसे थी। – Miles

संबंधित मुद्दे