Получение всего списка рассылки из «Глобального списка адресов» Outlook и участника в списке рассылки WPF

#wpf

#wpf

Вопрос:

я пишу новое приложение, и мне нужно найти всех участников списка рассылки в Outlook из «Глобального списка адресов».

После того, как я нашел весь список рассылки, мне нужно найти всех участников списка рассылки.

Наконец, я хочу получить всю информацию об участнике (например, контактную форму).

Я нашел этот код для поиска участников списка рассылки, но проблема в том, что мне нужно выбрать список рассылки из Outlook, и после этого в нем отобразятся все участники. Я хочу сделать это автоматически, предварительно введя название списка рассылки.

     private void GetDistributionListMembers()
    {
        gal = outlookApp.Session.GetGlobalAddressList();
        Outlook.SelectNamesDialog snd =
            outlookApp.Session.GetSelectNamesDialog();
        Outlook.AddressLists addrLists =
            outlookApp.Session.AddressLists;
        foreach (Outlook.AddressList addrList in addrLists)
        {
            if (addrList.Name == "My Distribution List")
            {
                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)
                    {
                        MessageBox.Show(exchDLMember.Name);
                    }
            }
        }
    }
  

Может ли кто-нибудь, пожалуйста, помочь мне с этим? я много искал в Google, но не нашел никакого решения.

Большое спасибо за вашу помощь.

Ответ №1:

Я нашел решение, позволяющее получить всех участников определенного «Списка рассылки», не выбирая его вручную, вот код:

     private void GetDistributionListMembers()
    {
        gal = outlookApp.Session.GetGlobalAddressList();
        Outlook.SelectNamesDialog snd =
            outlookApp.Session.GetSelectNamesDialog();
        Outlook.AddressLists addrLists =
            outlookApp.Session.AddressLists;
        foreach (Outlook.AddressList addrList in addrLists)
        {
            if (addrList.Name == "My Distribution List")
            {
                snd.InitialAddressList = addrList;
                break;
            }
        }
        snd.NumberOfRecipientSelectors =
            Outlook.OlRecipientSelectors.olShowTo;
        snd.ToLabel = "D/L";
        snd.ShowOnlyInitialAddressList = true;
        snd.AllowMultipleSelection = false;
        snd.Recipients.Add("My Distribution List");
        snd.Recipients.ResolveAll();
        //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)
                    {
                        MessageBox.Show(exchDLMember.Name);
                    }
            }
        }
    }
  

Я пытаюсь найти решение для получения всей информации о контакте (например, адрес, менеджер, …) у кого-нибудь есть идея?