VSTO outlook mailItem Application_ItemОтправить для перехвата contactItem от получателя Active Directory - PullRequest
0 голосов
/ 26 ноября 2018

как получить ContactItem из свойства Recipients по Active Directory.Я запустил код и получил контактный элемент, когда Получатели сохранены в локальном контакте.как получить ContactItem, когда получатели существуют только в Active Directory.

public void Application_ItemSend (объект mail, ref bool Cancel) {

        Outlook.MAPIFolder fldContacts = (Outlook.MAPIFolder)Application.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderContacts);
            for (int i = 1; i < mail.Recipients.Count + 1; i++)
            {
                Outlook.Recipient r = mail.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)
                    {
                        //to get the Department of Recipient
                        string DepartmentName = ci.Department;
                    }
                }
            }

    }

Ответы [ 2 ]

0 голосов
/ 26 ноября 2018

просто измените код следующим образом:

Outlook.ContactItem ci = (fldContacts.Items.Find ("[Email1Address] = '" + r.Address + "'") как Outlook.ContactItem);

изменить на ExchangeUser contactItem = rece.AddressEntry.GetExchangeUser ();

0 голосов
/ 26 ноября 2018

Вы можете обратиться к приведенному ниже коду:

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

                    }
                }

            }
        }

Для получения дополнительной информации, пожалуйста, перейдите по этой ссылке:

C # Outlook получить свойство CompanyName от Получателя

...