次の方法で共有


パブリック フォルダー階層の要求をルーティングする

パブリック フォルダー階層についての知識を必要とするパブリック フォルダー情報に関するすべての要求 (パブリック フォルダーの移動や更新、削除、検索など) は、特定のユーザーの既定のパブリック フォルダー階層のメールボックスにルーティングする必要があります。 そのメールボックスに要求をルーティングするには、X-AnchorMailbox ヘッダーと X-PublicFolderMailbox ヘッダーの値を自動検出サービスから返される特定の値に設定する必要があります。

パブリック フォルダーの概要

ヘッダー 必要なもの 取得する方法
X-AnchorMailbox
自動検出の SOAP 応答 GetUserSettings から得られる PublicFolderInformation 値。これが X-AnchorMailbox ヘッダーの値になります。 1. ユーザーのメールボックスの SMTP アドレスで GetUserSetting 要求を送信します。

2. PublicFolderInformation 要素を使用して 、X-AnchorMailbox ヘッダーの値を設定します。 PublicFolderInformation 要素の値は、SMTP アドレスです。
X-PublicFolderMailbox
GetUserSettings 自動検出 SOAP 応答からの InternalRpcClientServer 値。これは X-PublicFolderMailbox ヘッダーの値になります。 1. ユーザーのメールボックスの SMTP アドレスで GetUserSetting 要求を送信します。

2. 自動検出サービスによって返される InternalRpcClientServer 要素を使用して 、X-PublicFolderMailbox ヘッダーの値を設定します。 X-PublicFolderMailbox 要素の値は、アドレスのユーザー部分が GUID である SMTP アドレスです。

ヘッダーの値が決定したら、それらをパブリック フォルダー階層の要求を行うときに含めます。

この記事の手順は、パブリック フォルダー階層の要求に固有のものです。 要求がパブリック フォルダー階層とコンテンツのどちらの要求かを特定するには、「パブリック フォルダー要求のルーティング」を参照してください。

EWS マネージ API を使用してヘッダー値を決定する

次のコードを使用して 、GetUserSettings への 1 回の呼び出しを使用できます。これは、 InternalRpcClientServer 要素と PublicFolderInformation 要素の両方を取得します。 入力パラメーターとして、メールボックス ユーザーの SMTP アドレスを含めます。

GetUserSettingsResponse userResponse = GetUserSettings(adservice, "sonyaf@contoso.com", 3, UserSettingName.PublicFolderInformation, UserSettingName.InternalRpcClientServer);
Console.WriteLine("X-AnchorMailbox value for public folder hierarchy requests: {0}", userResponse.Settings[UserSettingName.PublicFolderInformation]);
Console.WriteLine("X-PublicFolderMailbox value for public folder hierarchy requests: {0}", userResponse.Settings[UserSettingName.InternalRpcClientServer]);

コードを実行すると、次の情報がコンソールに表示されます。

X-AnchorMailbox for public folder hierarchy requests: SharedPublicFolder@contoso.com
X-PublicFolderMailbox value for public folder hierarchy requests: 1ec2a236-ed93-4f88-b9c6-33e63fa4aa44@contoso.com

この時点で PublicFolderInformation 値は用意できています。この値は、X-AnchorMailbox ヘッダーの値としてパブリック フォルダー階層に対する要求のすべてに含めます。 InternalRpcClientServer 値は、X-PublicFolderMailbox ヘッダーに使用されます。 両方のヘッダーが必要です。

X-AnchorMailbox: SharedPublicFolder@contoso.com
X-PublicFolderMailbox: 1ec2a236-ed93-4f88-b9c6-33e63fa4aa44@contoso.com

SOAP を使用してヘッダー値を決定する

次のコード例は、GetUserSettings SOAP 操作を使用して PublicFolderInformation 値と InternalRpcClientServer 値を取得する方法を示しています。 メールボックス ユーザーは Mailbox 要素で指定され、 RequestedSettings 要素は 応答を PublicFolderInformationInternalRpcClientServer の値に制限します。

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:a="http://schemas.microsoft.com/exchange/2010/Autodiscover"
               xmlns:wsa="http://www.w3.org/2005/08/addressing"
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Header>
    <a:RequestedServerVersion>Exchange2016</a:RequestedServerVersion>
    <wsa:Action>http://schemas.microsoft.com/exchange/2010/Autodiscover/Autodiscover/GetUserSettings</wsa:Action>
    <wsa:To>https://autodiscover-s.outlook.com/autodiscover/autodiscover.svc</wsa:To>
  </soap:Header>
  <soap:Body>
    <a:GetUserSettingsRequestMessage xmlns:a="http://schemas.microsoft.com/exchange/2010/Autodiscover">
      <a:Request>
        <a:Users>
          <a:User>
            <a:Mailbox>sonyaf@contoso.com</a:Mailbox>
          </a:User>
        </a:Users>
        <a:RequestedSettings>
          <a:Setting>PublicFolderInformation</a:Setting>
          <a:Setting>InternalRpcClientServer</a:Setting>
        </a:RequestedSettings>
      </a:Request>
    </a:GetUserSettingsRequestMessage>
  </soap:Body>
</soap:Envelope>

応答には、PublicFolderInformation 値が含まれています。

<UserSetting i:type="StringSetting">
  <Name>InternalRpcClientServer</Name>
  <Value>1ec2a236-ed93-4f88-b9c6-33e63fa4aa44@contoso.com</Value>
</UserSetting>
<UserSetting i:type="StringSetting">
    <Name>PublicFolderInformation</Name>
    <Value>SharedPublicFolder@contoso.com</Value>
</UserSetting>

この時点で PublicFolderInformation 値は用意できています。この値は、X-AnchorMailbox ヘッダーの値としてパブリック フォルダー階層に対する要求のすべてに含めます。 X-PublicFolderMailbox ヘッダーの InternalRpcClientServer 値を使用します。 両方のヘッダーが必要です。

X-AnchorMailbox: SharedPublicFolder@contoso.com
X-PublicFolderMailbox: 1ec2a236-ed93-4f88-b9c6-33e63fa4aa44@contoso.com

自動検出プロセスの詳細については、「Exchange の自動検出」、「自動検出エンドポイントの一覧を生成する」、および「自動検出を使用して Exchange からユーザー設定を取得する」を参照してください。

X-AnchorMailbox ヘッダーと X-PublicFolderMailbox ヘッダーの値を設定する

「EWS マネージ API を使用して X-AnchorMailbox ヘッダーの値を決定する」または「SOAP を使用して X-AnchorMailbox ヘッダーの値を決定する」で取得した PublicFolderInformationInternalRpcClientServerの値を使用して、パブリック フォルダー コンテンツ要求の X-AnchorMailbox ヘッダーと X-PublicFolderMailbox ヘッダーの値を設定します。

たとえば、 の PublicFolderInformation SMTP アドレス SharedPublicFolder@contoso.com と InternalRpcClientServer の値を指定すると、次の 1ec2a236-ed93-4f88-b9c6-33e63fa4aa44@contoso.comメソッドまたは操作を呼び出すときに、次のヘッダーが含まれます。

X-AnchorMailbox: SharedPublicFolder@contoso.com
X-PublicFolderMailbox: 1ec2a236-ed93-4f88-b9c6-33e63fa4aa44@contoso.com

X-AnchorMailbox ヘッダーと X-PublicFolder ヘッダーが必要なパブリック フォルダーの呼び出し

EWS マネージ API メソッド EWS 操作
Folder.FindFolders
Folder.Delete
Folder.Update
Folder.Move
CreateFolder
FindFolder
DeleteFolder
UpdateFolder
MoveFolder

EWS マネージ API を使用してこれらのヘッダーを追加するには、HttpHeaders.Add メソッドを使用します。

service.HttpHeaders.Add("X-AnchorMailbox", "SharedPublicFolder@contoso.com");
service.HttpHeaders.Add("X-PublicFolderMailbox", "1ec2a236-ed93-4f88-b9c6-33e63fa4aa44@contoso.com");

たとえば、次のコードは、この記事の例で取得した値に X-AnchorMailbox ヘッダーと X-PublicFolderMailbox ヘッダーが設定されている FindFolder 要求を示しています。

POST https://outlook.office365.com/EWS/Exchange.asmx HTTP/1.1
Content-Type: text/xml; charset=utf-8
X-AnchorMailbox: SharedPublicFolder@contoso.com
X-PublicFolderMailbox: 1ec2a236-ed93-4f88-b9c6-33e63fa4aa44@contoso.com
Host: outlook.office365.com
Content-Length: 1174
Expect: 100-continue
Connection: Keep-Alive
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Header>
    <t:RequestServerVersion Version="Exchange2013_SP1" />
  </soap:Header>
  <soap:Body>
    <m:FindFolder Traversal="Shallow">
      <m:FolderShape>
        <t:BaseShape>AllProperties</t:BaseShape>
      </m:FolderShape>
      <m:IndexedPageFolderView MaxEntriesReturned="1" Offset="0" BasePoint="Beginning" />
      <m:Restriction>
        <t:IsEqualTo>
          <t:FieldURI FieldURI="folder:DisplayName" />
          <t:FieldURIOrConstant>
            <t:Constant Value="My Public Contacts" />
          </t:FieldURIOrConstant>
        </t:IsEqualTo>
      </m:Restriction>
      <m:ParentFolderIds>
        <t:FolderId Id="AQEuAAADy/LIWjRCp0GFb0W6aGPbwwEARg5aCLUc8k6wLfl1c0a/2AAAAwIAAAA=" ChangeKey="AQAAABYAAABGDloItRzyTrAt+XVzRr/YAABdo/XB" />
      </m:ParentFolderIds>
    </m:FindFolder>
  </soap:Body>
</soap:Envelope>

関連項目