2012-09-13 23 views
6

से कंपनी नाम संपत्ति प्राप्त करें मैं वर्तमान में सी # का उपयोग कर Outlook 2010 AddIn लिख रहा हूं। मैं चाहता हूं कि कंपनी नाम संपत्ति को प्राप्तकर्ता ऑब्जेक्ट से प्राप्त करें जिसे मैं नियुक्ति से हटाता हूं। इसलिए, एक नियुक्ति के प्राप्तकर्ता होने के नाते मैं प्रत्येक प्राप्तकर्ता का कंपनी नाम ढूंढना चाहता हूं, जो एक एक्सचेंज यूज़र हो सकता है।सी # आउटलुक प्राप्तकर्ता

मेरे कोड यह है:

Recipients recipients = appointmentItem.Recipients; 
foreach (Recipient rec in recipients) 
{ 
    resolved = rec.Resolve(); 
    if (resolved) 
    { 
     ContactItem contactItem = rec.AddressEntry.GetContact(); 
     String companyName = contactItem.CompanyName;  
     // ... 
    } 

कहाँ contactItem हमेशा रिक्त है।

ऐसा कुछ करने से नल पॉइंटर भी होता है।

ExchangeUser u = rec.AddressEntry.GetExchangeUser(); 
companyName = u.CompanyName; 

मैं बस कंपनी नाम की जानकारी नहीं प्राप्त कर सकता हूं। मुझे पता है कि जानकारी मौजूद है। हालांकि, कंपनीनाम के अलावा, कई अन्य विशेषताओं के परिणामस्वरूप न्यूल पॉइंटर्स भी हैं।

क्या कोई मुझे उस पर संकेत दे सकता है?

अग्रिम धन्यवाद।

उत्तर

3

नीचे कोड के साथ प्रयास करें। मेरे लिए काम करना

कोड:

bool resolved; 
     Microsoft.Office.Interop.Outlook.Application olApplication = new Microsoft.Office.Interop.Outlook.Application(); 

     // get nameSpace and logon. 
     Microsoft.Office.Interop.Outlook.NameSpace olNameSpace = olApplication.GetNamespace("mapi"); 
     olNameSpace.Logon("Outlook", "", false, true); 

     // get the Calender items 
     Microsoft.Office.Interop.Outlook.MAPIFolder _olCalender = olNameSpace.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderCalendar); 

     // Get the Items (Appointments) collection from the Calendar folder. 
     Microsoft.Office.Interop.Outlook.Items oItems = _olCalender.Items; 



     foreach (object o in oItems) 
     { 

      if (o is Microsoft.Office.Interop.Outlook.AppointmentItem) 
      { 
       Microsoft.Office.Interop.Outlook.Recipients recipients = ((Microsoft.Office.Interop.Outlook.AppointmentItem)o).Recipients; 
       foreach (Microsoft.Office.Interop.Outlook.Recipient rec in recipients) 
       { 
        resolved = rec.Resolve(); 
        if (resolved) 
        { 
         Microsoft.Office.Interop.Outlook.ContactItem contactItem = rec.AddressEntry.GetContact(); 
         MessageBox.Show(contactItem.CompanyName); 
        } 
       } 

      } 
     } 

आशा है कि यह काम करना चाहिए।

1

मैंने यह कोशिश नहीं की है लेकिन इससे मदद मिल सकती है। ऐसा लगता है कि कंपनीनाम एक ContactItem की एक संपत्ति है, इसलिए आपको प्राप्तकर्ता को ContactItem में परिवर्तित करने की आवश्यकता है। नीचे दिया गया कोड प्राप्तकर्ता के ईमेल पते का उपयोग कर पता पुस्तिका में संपर्क की तलाश करता है। यहां से आप कंपनी नाम ढूंढ सकते हैं:

Outlook.MAPIFolder fldContacts = (Outlook.MAPIFolder)OutlookApp.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderContacts); 
for (int i =1; i <aitem.Recipients.Count+1 ; i++) 
{ 
    Outlook.Recipient r = aitem.Recipients.Item(i); 
    if (!r.Resolved) r.Resolve(); 
    if (r.Resolved) 
    { 
    Outlook.ContactItem ci = (fldContacts.Items.Find("[Email1Address] = '" + r.Address + "'") as Outlook.ContactItem); 
    if (ci != null) 
    { 
     //Now you got the contact deal with it here 
    } 
    } 
} 
संबंधित मुद्दे