Obtener miembros de una lista de distribución de Exchange
En este ejemplo, se solicita al usuario que seleccione una lista de distribución de Exchange del cuadro de diálogo Seleccionar nombres y se expande la lista de distribución para mostrar sus miembros.
Ejemplo
Este ejemplo de código llama al método GetExchangeDistributionListMembers del objeto ExchangeDistributionList para obtener una colección AddressEntries que contiene todos los miembros de la lista. Dado que las listas de distribución se pueden anidar dentro de otra lista de distribución, la colección AddressEntries devuelta puede representar cualquier tipo de objeto AddressEntry de Exchange.
Nota:
Al expandir listas de distribución se puede crear una carga de rendimiento en un servidor de Exchange, por lo que debe usar el método GetExchangeDistributionListMembers con precaución. Debe esperar que el código sea lento al expandir listas de distribución grandes.
Para obtener los miembros de una lista de distribución, el usuario debe estar conectado a un servidor de Exchange y en línea.
Si usa Visual Studio para probar este ejemplo de código, primero debe agregar una referencia al componente de la biblioteca de objetos de Microsoft Outlook 15.0 y especificar la variable de Outlook al importar el espacio de nombres Microsoft.Office.Interop.Outlook. La instrucción Imports o using no deben producirse directamente antes de las funciones en el ejemplo de código, pero deben agregarse antes de la declaración de clase pública. Las líneas siguientes de código muestran cómo realizar la importación y la asignación en Visual Basic y C#.
Imports Outlook = Microsoft.Office.Interop.Outlook
using Outlook = Microsoft.Office.Interop.Outlook;
Private Sub GetDistributionListMembers()
Dim snd As Outlook.SelectNamesDialog = _
Application.Session.GetSelectNamesDialog()
Dim addrLists As Outlook.AddressLists = _
Application.Session.AddressLists
For Each addrList As Outlook.AddressList In addrLists
If addrList.Name = "All Groups" Then
snd.InitialAddressList = addrList
Exit For
End If
Next
snd.NumberOfRecipientSelectors = _
Outlook.OlRecipientSelectors.olShowTo
snd.ToLabel = "D/L"
snd.ShowOnlyInitialAddressList = True
snd.AllowMultipleSelection = False
snd.Display()
If (snd.Recipients.Count > 0) Then
Dim addrEntry As Outlook.AddressEntry = _
snd.Recipients(1).AddressEntry
If (addrEntry.AddressEntryUserType = _
Outlook.OlAddressEntryUserType. _
olExchangeDistributionListAddressEntry) Then
Dim exchDL As Outlook.ExchangeDistributionList = _
addrEntry.GetExchangeDistributionList()
Dim addrEntries As Outlook.AddressEntries = _
exchDL.GetExchangeDistributionListMembers()
If Not (addrEntries Is Nothing) Then
For Each exchDLMember As _
Outlook.AddressEntry In addrEntries
Debug.WriteLine(exchDLMember.Name)
Next
End If
End If
End If
End Sub
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);
}
}
}
}
Vea también
- Exchange users (Usuarios de Exchange)