VSTO outlook add-in Как получить членов списка рассылки Exchange из списка рассылки outlook - PullRequest
1 голос
/ 13 июня 2011

У меня есть надстройка VSTO, которая получает получателя от почтового элемента и сохраняет его в нашем списке пользователей. В случае обмена списком рассылки или обмена контактом в качестве получателя, он работает нормально, извлекая адрес SMTP из обоих адресов. Для этого работает объектная модель внешнего вида.

, но проблема возникает, когда список рассылки Exchange добавляется в качестве члена в список рассылки outlook, а почта отправляется в этот локальный список рассылки. Есть ли способ извлечь SMTP-адреса каждого контакта из этого вложенного списка рассылки.

Пока у меня есть метод DistListItem.GetMember (i) для получения члена этого списка рассылки. Он предоставляет объект Recipient, и когда я пытаюсь получить доступ к свойству member.AddressEntry.AddressEntryUserType из этого объекта, возникает исключение «Элемент не найден». Кто-нибудь знает, как я могу получить тип члена списка рассылки или entryId из этого объекта получателя?

1 Ответ

0 голосов
/ 04 мая 2017
    private void GetDistributionListMembers()
{
    Outlook.SelectNamesDialog snd =
        Application.Session.GetSelectNamesDialog();
    Outlook.AddressLists addrLists =
        Application.Session.AddressLists;
    foreach (Outlook.AddressList addrList in addrLists)
    {
        if (addrList.Name == "All Groups")
        {
            snd.InitialAddressList = addrList;
            break;
        }
    }
    snd.NumberOfRecipientSelectors =
        Outlook.OlRecipientSelectors.olShowTo;
    snd.ToLabel = "D/L";
    snd.ShowOnlyInitialAddressList = true;
    snd.AllowMultipleSelection = false;
    snd.Display();
    if (snd.Recipients.Count > 0)
    {
        Outlook.AddressEntry addrEntry =
            snd.Recipients[1].AddressEntry;
        if (addrEntry.AddressEntryUserType ==
            Outlook.OlAddressEntryUserType.
            olExchangeDistributionListAddressEntry)
        {
            Outlook.ExchangeDistributionList exchDL =
                addrEntry.GetExchangeDistributionList();
            Outlook.AddressEntries addrEntries =
                exchDL.GetExchangeDistributionListMembers();
            if (addrEntries != null)
                foreach (Outlook.AddressEntry exchDLMember
                    in addrEntries)
                {
                    Debug.WriteLine(exchDLMember.Name);
                }
        }
    }
}
...