VSTO outlook add-in Как получить членов списка рассылки Exchange из списка рассылки outlook
У меня есть VSTO Надстройка, которая получает получателя от почтового элемента и сохраняет его в нашем списке пользователей. В случае обмена списком рассылки или обмена контактом в качестве получателя, он отлично работает, извлекая адрес SMTP из обоих адресов. Для этого работает объектная модель внешнего вида.
но проблема возникает, когда список рассылки Exchange добавляется в качестве члена в список рассылки outlook, а почта отправляется в этот локальный список рассылки. Есть ли способ извлечь SMTP-адреса каждого контакта из этого вложенного списка рассылки.
Пока у меня есть метод DistListItem.GetMember (i), чтобы получить член этого списка рассылки. Он предоставляет объект Recipient, и когда я пытаюсь получить доступ к свойству member.AddressEntry.AddressEntryUserType из этого объекта, возникает исключение "Элемент не найден". Кто-нибудь знает, как я могу получить тип члена списка рассылки или entryId от этого объекта получателя?
1 ответ
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);
}
}
}
}