2012-06-07 13 views
7

मेरे दृष्टिकोण में एडिन में मैं रिबन पर एक बटन जोड़ना चाहता हूं ताकि उपयोगकर्ता इस बटन पर क्लिक करे, मैं वर्तमान चयनित ईमेल के शरीर को पुनर्प्राप्त करना चाहता हूं, मेरे पास यह कोड है लेकिन यह केवल पहला ईमेल पुनर्प्राप्त करता है इनबॉक्स क्योंकि इंडेक्स 1:आउटलुक में वर्तमान ईमेल बॉडी को पुनर्प्राप्त करें

Microsoft.Office.Interop.Outlook.Application myApp = new Microsoft.Office.Interop.Outlook.Application(); 
Microsoft.Office.Interop.Outlook.NameSpace mapiNameSpace = myApp.GetNamespace("MAPI"); 
Microsoft.Office.Interop.Outlook.MAPIFolder myInbox = mapiNameSpace.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderInbox); 
String body = ((Microsoft.Office.Interop.Outlook.MailItem)myInbox.Items[1]).Body; 

तो Outlook में वर्तमान खुले ईमेल को कैसे पुनर्प्राप्त करें? , यह विधि मेरे लिए काम करती है लेकिन मुझे वर्तमान ईमेल के लिए इंडेक्स प्राप्त करने की आवश्यकता है।

धन्यवाद।

उत्तर

7

आपको प्रत्येक बार एक नया Outlook.Application() उदाहरण प्रारंभ नहीं करना चाहिए। अधिकांश ऐड-इन फ्रेमवर्क आपको Outlook.Application उदाहरण प्रदान करते हैं, वर्तमान Outlook सत्र से संबंधित, आमतौर पर Application नामक फ़ील्ड या प्रॉपर्टी के माध्यम से। आपसे अपने ऐड-इन के जीवनकाल के लिए इसका उपयोग करने की उम्मीद है।

Outlook.Explorer explorer = this.Application.ActiveExplorer(); 
Outlook.Selection selection = explorer.Selection; 

if (selection.Count > 0) // Check that selection is not empty. 
{ 
    object selectedItem = selection[1]; // Index is one-based. 
    Outlook.MailItem mailItem = selectedItem as Outlook.MailItem; 

    if (mailItem != null) // Check that selected item is a message. 
    { 
     // Process mail item here. 
    } 
} 

नोट ऊपर आप पहले चयनित आइटम पर कार्रवाई करने देगा कि:

वर्तमान में चयनित आइटम, उपयोग पाने के लिए। यदि आपके पास एकाधिक आइटम चुने गए हैं, तो आप उन्हें लूप में संसाधित करना चाहेंगे।

+0

सहायता के लिए धन्यवाद, लेकिन लाइन 2 में कोई त्रुटि है: गैर-चालनीय सदस्य 'माइक्रोसॉफ्ट.ऑफिस.इंटरोप.ऑटlook._एक्सप्लोरर। चयन' विधि – Radi

+1

माफी के रूप में उपयोग नहीं किया जा सकता है; मैं भूल गया कि 'चयन' एक संपत्ति थी, एक विधि नहीं। संशोधित कोड के साथ पुनः प्रयास करें। – Douglas

+0

चेक करें कि चयनित आइटम मेल आइटम जोड़े जा सकते हैं साथ ही उपयोगकर्ता ने संपर्क, अपॉइंटमेंट या कुछ और चुना हो सकता है। बस मेरे 2 सेंट। –

6

शीर्ष पर

using Outlook = Microsoft.Office.Interop.Outlook; 
एक विधि के अंदर

तब के संदर्भ जोड़ने;

Outlook._Application oApp = new Outlook.Application(); 
if (oApp.ActiveExplorer().Selection.Count > 0) 
      { 
       Object selObject = oApp.ActiveExplorer().Selection[1]; 

       if (selObject is Outlook.MailItem) 
       { 
        Outlook.MailItem mailItem = (selObject as Outlook.MailItem); 
        String htmlBody = mailItem.HTMLBody; 
        String Body = mailItem.Body; 
       } 
      } 

इसके अलावा आप उस शरीर को बदल सकते हैं जो मेल देखने से पहले दृष्टिकोण में दिखाएगा।

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