Search code examples
c#outlookadd-in

C# Outlook get CompanyName property from Recipient


I am currently writing an Outlook 2010 AddIn using C#. What I want is to get the CompanyName property from a Recipient object that I pull from an AppointmentItem. So, having the Recipients of an AppointmentItem I want to find out the CompanyName of each Recipient, which might be an ExchangeUser.

My code is this:

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

Where contactItem is always null.

Doing something like this also results in a null pointer.

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

I simply cannot get to the CompanyName information. I know the information does exist. However, also a lot of other attributes, besides CompanyName, seem to result in NULL pointers as well.

Can someone give me a hint on that?

Thanks in advance.


Solution

  • Try with below code. Working for me.

    CODE:

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

    Hope It should work.