パブリック フォルダー階層の要求をルーティングする
パブリック フォルダー階層についての知識を必要とするパブリック フォルダー情報に関するすべての要求 (パブリック フォルダーの移動や更新、削除、検索など) は、特定のユーザーの既定のパブリック フォルダー階層のメールボックスにルーティングする必要があります。 そのメールボックスに要求をルーティングするには、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 要素は 応答を PublicFolderInformation と InternalRpcClientServer の値に制限します。
<?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 ヘッダーの値を決定する」で取得した PublicFolderInformation と InternalRpcClientServerの値を使用して、パブリック フォルダー コンテンツ要求の 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>