Freigeben über


Erweitern von Verteilergruppen mithilfe von EWS in Exchange 2013

Erfahren Sie, wie Sie eine Verteilergruppe mithilfe der verwalteten EWS-API oder EWS in Exchange erweitern.

Sie können die ExchangeService.ExpandGroup EWS Managed API-Methode oder den EwS-Vorgang ExpandDL verwenden, um eine Verteilergruppe zu erweitern, um alle Empfänger zu identifizieren.

Da die ExpandGroup-Methode überladen ist, können Sie sie auf verschiedene Arten aufrufen:

Erweitern einer universellen Verteilergruppe oder Sicherheitsgruppe mithilfe der verwalteten EWS-API

Das folgende Beispiel zeigt, wie Sie eine universelle Verteilergruppe oder Sicherheitsgruppe mithilfe einer E-Mail-Adresse erweitern. Dies ist der einfachste Ansatz. In diesem Beispiel wird davon ausgegangen, dass service ein gültiges ExchangeService-Objekt ist und der Benutzer bei einem Exchange-Server authentifiziert wurde.

// Return the expanded group.
   ExpandGroupResults myGroupMembers = service.ExpandGroup("employees@contoso.com");
// Display the group members.
   foreach (EmailAddress address in myGroupMembers.Members)
   {
      Console.WriteLine("Email Address: {0}", address);
   }

Das ist nicht viel Code, aber es ist auch ziemlich einfach und gibt Ihnen möglicherweise nicht das, was Sie suchen. Gehen wir also noch einen Schritt weiter. Verteilergruppen können auch andere Verteilergruppen enthalten. Durch einfaches Erweitern wird die E-Mail-Adresse der enthaltenen Verteilergruppen ausgegeben, aber nicht erweitert. Durch Hinzufügen einiger weiterer Codezeilen können Sie die Gruppen rekursiv erweitern, um jeden Kontakt auszugeben.

private static void ExpandDistributionLists(ExchangeService service, string Mailbox)
{
   // Return the expanded group.
      ExpandGroupResults myGroupMembers = service.ExpandGroup(Mailbox);
   // Display the group members.
      foreach (EmailAddress address in myGroupMembers.Members)
      {
         // Check to see if the mailbox is a public group
         if (address.MailboxType == MailboxType.PublicGroup)
      {
         // Call the function again to expand the contained
         // distribution group.
         ExpandDistributionLists(service, address.Address);
      }
      else
      {
         // Output the address of the mailbox.
         Console.WriteLine("Email Address: {0}", address);
      }
   }
}

Jetzt können Sie diese neue Funktion im Code aufrufen und alle öffentlichen Verteilergruppen erweitern, die in der ersten enthalten sind.

ExpandDistributionLists(service, "employees@contoso.com");

Erweitern einer Kontaktgruppe mithilfe der verwalteten EWS-API

Da Kontaktgruppen keine zugeordnete E-Mail-Adresse haben, müssen Sie die Gruppe basierend auf der ItemId mithilfe der ExpandGroup(ItemId) -Methode erweitern. Sie können eine Funktion erstellen, wie im vorherigen Beispiel gezeigt, und den zweiten Parametertyp von einer Zeichenfolge in eine ItemId ändern.

private static void ExpandContactGroup(ExchangeService service, ItemId groupID)
{
   // Return the expanded group.
      ExpandGroupResults myGroupMembers = service.ExpandGroup(groupID);
   // Display the group members.
      foreach (EmailAddress address in myGroupMembers.Members)
      {
         if (address.MailboxType == MailboxType.PublicGroup)
         {
            ExpandDistributionLists(service, address.Address);
         }
         else
         {
            Console.WriteLine("Email Address: {0}", address);
         }
      }
}

Jetzt können Sie diese Funktion mithilfe des Exchange-Dienstobjekts und der ItemId der Kontaktgruppe aufrufen. Beachten Sie, dass die ItemId im Beispiel zur Lesbarkeit gekürzt wird.

ExpandContactGroup(service, new ItemId("AAMkADBlY…");

Erweitern einer universellen Verteilergruppe oder Sicherheitsgruppe mithilfe von EWS

Das folgende Beispiel zeigt die XML-Anforderungsnachricht, die vom Client an den Server gesendet wird, wenn Sie den ExpandDL-Vorgang verwenden. Dies ist auch die XML-Anforderung, die die verwaltete EWS-API sendet, wenn Sie die verwaltete EWS-API verwenden, um eine universelle Verteilergruppe zu erweitern.

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/"
               xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types">
  <soap:Body>
    <ExpandDL xmlns="http://schemas.microsoft.com/exchange/services/2006/messages"
              xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types">
      <Mailbox>
        <t:EmailAddress>employees@contoso.com</t:EmailAddress>
      </Mailbox>
    </ExpandDL>
  </soap:Body>
</soap:Envelope>

Das folgende Beispiel zeigt die XML-Antwortnachricht, die vom Server an den Client gesendet wird. Beachten Sie, dass sowohl Postfächer als auch universelle Verteilergruppen zurückgegeben werden.

<?xml version="1.0" encoding="utf-8"?>
<s:Envelope xmlns:s="https://schemas.xmlsoap.org/soap/envelope/">
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<ExpandDLResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
                      xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <ResponseMessages xmlns="http://schemas.microsoft.com/exchange/services/2006/messages">
    <ExpandDLResponseMessage ResponseClass="Success">
      <ResponseCode>NoError</ResponseCode>
      <DLExpansion IncludesLastItemInRange="true" TotalItemsInView="4">
        <Mailbox xmlns="http://schemas.microsoft.com/exchange/services/2006/types">
          <Name>Sadie Daniels</Name>
          <EmailAddress>sadie@contoso.com</EmailAddress>
          <RoutingType>SMTP</RoutingType>
          <MailboxType>Mailbox</MailboxType>
        </Mailbox>
        <Mailbox xmlns="http://schemas.microsoft.com/exchange/services/2006/types">
          <Name>Alfred Welker</Name>
          <EmailAddress>alfred@contoso.com</EmailAddress>
          <RoutingType>SMTP</RoutingType>
          <MailboxType>Mailbox</MailboxType>
        </Mailbox>
        <Mailbox xmlns="http://schemas.microsoft.com/exchange/services/2006/types">
          <Name>Contoso Sales</Name>
          <EmailAddress>sales@contoso.com</EmailAddress>
          <RoutingType>SMTP</RoutingType>
          <MailboxType>PublicDL</MailboxType>
        </Mailbox>
        <Mailbox xmlns="http://schemas.microsoft.com/exchange/services/2006/types">
          <Name>Contoso Support</Name>
          <EmailAddress>support@contoso.com</EmailAddress>
          <RoutingType>SMTP</RoutingType>
          <MailboxType>PublicDL</MailboxType>
        </Mailbox>
      </DLExpansion>
    </ExpandDLResponseMessage>
  </ResponseMessages>
</ExpandDLResponse>
</s:Body>
</s:Envelope>

Anders als bei Verwendung der verwalteten EWS-API können Sie bei Verwendung von EWS zum Erweitern einer universellen Verteilergruppe die zurückgegebenen Verteilergruppen nicht rekursiv erweitern. Sie müssen eine zusätzliche Anforderung senden, um jede der in der Antwort enthaltenen Verteilergruppen zu erweitern.

Erweitern einer Kontaktgruppe mithilfe von EWS

Die XML-Anforderung zum Erweitern einer Kontaktgruppe ähnelt einer Anforderung zum Erweitern einer Verteilergruppe. Anstelle einer E-Mail-Adresse verwenden Sie die ItemId der Kontaktgruppe. Die ItemId in diesem Beispiel wird aus Gründen der Lesbarkeit gekürzt.

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/"
               xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types">
  <soap:Body>
    <ExpandDL xmlns="http://schemas.microsoft.com/exchange/services/2006/messages"
              xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types">
      <Mailbox>
         <ItemId xmlns="http://schemas.microsoft.com/exchange/services/2006/types" Id="AAMkADBlY…" />
      </Mailbox>
    </ExpandDL>
  </soap:Body>
</soap:Envelope>

Die Struktur der XML-Antwort auf eine Anforderung zum Erweitern einer Kontaktgruppe ist identisch mit der Antwort auf eine Anforderung zum Erweitern einer universellen Verteilergruppe.

Siehe auch