Exchange 2013 の EWS を使用して配布グループを展開する

Exchange で EWS マネージ API または EWS を使用して配布グループを展開する方法について説明します。

ExchangeService.ExpandGroup EWS マネージ API メソッドまたは ExpandDL EWS 操作を使用して、配布グループを展開し、すべての受信者を識別できます。

ExpandGroup メソッドはオーバーロードされているため、いくつかの方法で呼び出すことができます。

  • ExpandGroup(String): SMTP アドレスによって識別されるグループを展開します。

  • ExpandGroup(EmailAddress): メール アドレスによって識別されるグループを展開します。

  • ExpandGroup(ItemId): グループ ID によって識別されるグループを展開します。

  • ExpanGroup(String, String): SMTP アドレスと、そのアドレスのルーティングの種類によって識別されるグループを展開します。

EWS マネージ API を使用してユニバーサル配布グループまたはセキュリティ グループを展開する

次の例では、メール アドレスを使ってユニバーサル配布グループまたはセキュリティ グループを展開する方法を示します。これは最も簡単なアプローチです。 この例では、service が有効な ExchangeService オブジェクトであり、ユーザーが Exchange サーバーに既に認証されていると想定しています。

// 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);
   }

これは長いコードではなく、非常に基本的であり、お探しのものとは異なる可能性があります。 ではもう一歩踏み込んでみましょう。 配布グループには、他の配布グループを含めることもできます。 単に展開した場合、含まれている配布グループのメール アドレスは出力されますが、グループが展開されるわけではありません。 数行のコードを追加すると、グループを再帰的に展開して、すべての連絡先を出力できます。

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);
      }
   }
}

これで、この新しい関数をコード内で呼び出して、最初のグループに含まれているすべてのパブリックな配布グループを展開できます。

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

EWS マネージ API を使用して連絡先グループを展開する

連絡先グループには関連付けられているメール アドレスがないため、ExpandGroup(ItemId) メソッドを使用して、ItemId に基づいてグループを展開する必要があります。 前の例のように関数を作成し、2 番目のパラメーターの型を文字列から ItemId に変更できます。

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);
         }
      }
}

これで、Exchange サービスのオブジェクトと連絡先グループの ItemId を使用してこの関数を呼び出すことができます。 この例の ItemId は、読みやすさのために短くしてあることに注意してください。

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

EWS を使用して、ユニバーサル配布グループまたはセキュリティ グループを展開する

次の例では、ExpandDL 操作を使用するときにクライアントからサーバーに送信される XML 要求メッセージを示します。 これは、EWS マネージ API を使用してユニバーサル配布グループを展開する場合に、EWS マネージ API が送信する XML 要求でもあります。

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

次の例では、サーバーからクライアントに送信される XML 応答メッセージを示します。 メールボックスとユニバーサル配布グループの両方が返されることにご注意ください。

<?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="https://schemas.microsoft.com/exchange/services/2006/messages">
    <ExpandDLResponseMessage ResponseClass="Success">
      <ResponseCode>NoError</ResponseCode>
      <DLExpansion IncludesLastItemInRange="true" TotalItemsInView="4">
        <Mailbox xmlns="https://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="https://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="https://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="https://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>

EWS マネージ API を使用する場合とは異なり、EWS を使用してユニバーサル配布グループを展開する場合は、返される配布グループを再帰的に展開できません。 応答に含まれている各配布グループを展開するには、追加の要求を送信する必要があります。

EWS を使用して連絡先グループを展開する

連絡先グループを展開するための XML 要求は、配布グループを展開するための要求に似ています。 メール アドレスの代わりに、連絡先グループの ItemId を使用します。 この例の ItemId は、読みやすさのために短くしてあります。

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

連絡先グループを展開するための要求に対する XML 応答の構造は、ユニバーサル配布グループを展開するための要求への応答と同じです。

関連項目