Abrufen der Mitglieder einer Exchange-Verteilerliste
In diesem Beispiel wird der Benutzer aufgefordert, eine Exchange-Verteilerliste aus dem Dialogfeld Namen auswählen auszuwählen, und die Verteilerliste wird so erweitert, dass die Mitglieder der Verteilerliste angezeigt werden.
Beispiel
In diesem Codebeispiel wird die GetExchangeDistributionListMembers -Methode des ExchangeDistributionList -Objekts aufgerufen, um die AddressEntries -Sammlung mit allen Mitgliedern der Liste abzurufen. Weil Verteilerlisten in anderen Verteilerlisten verschachtelt sein können, kann die zurückgegebene AddressEntries-Sammlung jede Art von Exchange-AddressEntry -Objekt darstellen.
Hinweis
Das Erweitern von Verteilerlisten kann eine Leistungsbelastung auf einem Exchange-Server verursachen. Verwenden Sie daher die GetExchangeDistributionListMembers-Methode vorsichtig. Erwarten Sie, dass Ihr Code langsam ist, wenn er große Verteilerlisten erweitert.
Um die Mitglieder einer Verteilerliste abzurufen, muss der Benutzer mit einem Exchange-Server verbunden und online sein.
Wenn Sie Visual Studio verwenden, um dieses Codebeispiel zu testen, müssen Sie der Microsoft Outlook 15.0-Objektbibliothekkomponente zuerst einen Verweis hinzufügen und die Outlook-Variable angeben, wenn Sie den Microsoft.Office.Interop.Outlook-Namespace importieren. Die Anweisung Imports oder using darf im Codebeispiel nicht direkt vor den Funktionen stehen, sondern muss vor der öffentlichen Class-Deklaration hinzugefügt werden. Die folgenden Codezeilen zeigen, wie Sie den Import und die Zuweisung in Visual Basic und C# vornehmen.
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);
}
}
}
}