Exchange での EWS を使用したパブリック フォルダー アクセス

パブリック フォルダーへのアクセスとパブリック フォルダー要求のルーティングに、Exchange の EWS と EWS マネージ API を使用する方法について説明します。

パブリック フォルダーは、組織内のユーザーがアクセスできるアイテムの共有リポジトリを提供します。 Office 365、Exchange Online、および Exchange 2013 以降の Exchange のオンプレミス バージョンでは、新しいアーキテクチャのパブリック フォルダーが導入されています。 Exchange のパブリック フォルダーは、特別なメールボックスの設計 (パブリック フォルダー データベースの代わり) を使用して、パブリック フォルダー階層とパブリック フォルダーの内容を格納します。 パブリック フォルダーのアクセス許可は役割ベースのアクセス制御 (RBAC) で管理します。

Exchange Web サービス (EWS) や EWS マネージ API などのクライアント アクセス テクノロジにより、パブリック フォルダー階層とパブリック フォルダー データベース内のコンテンツ アイテムにプログラムからアクセスできます。 この記事では、パブリック フォルダーとパブリック フォルダー データにアクセスするために、EWS と EWS マネージ API を使用する方法について説明します。

パブリック フォルダーへのアクセスのための EWS 操作と EWS マネージ API

主要な EWS 操作のほとんどは、パブリック フォルダーへのアクセスをサポートしています。 次の表に示したフォルダーとアイテムの操作および EWS マネージ API のメソッドは、パブリック フォルダーに使用できます。

EWS マネージ API のメソッドの詳細については、「EWS マネージ API の名前空間」を参照してください。

EWS 操作 EWS マネージ API メソッド
CreateFolder 操作
Folder.Save()
UpdateFolder 操作
Folder.Update()
DeleteFolder 操作
Folder.Delete()
MoveFolder 操作1
Folder.Move()
CopyFolder 操作2
Folder.Copy()
GetFolder 操作
Folder.Bind()
EmptyFolder 操作3
Folder.Empty()
FindFolder 操作
ExchangeService.FindFolders()
Folder.FindFolders()
CreateItem 操作
Item.Save()
MoveItem 操作
Item.Move()
CopyItem 操作
Item.Copy()
UpdateItem 操作
Item.Update()
DeleteItem 操作
Item.Delete()
FindItem 操作4
ExchangeService.FindItems()
Folder.FindItems()
GetItem 操作
Item.Bind()
ConvertId 操作5
ExchangeService.ConvertId()
ExchangeService.ConvertIds()

1 パブリック フォルダーと非公開フォルダー間のフォルダー移動は、Exchange 2013 以降の Exchange のバージョンでは利用できません。

2 この操作は、Exchange Server 2007 と Exchange Server 2010 のパブリック フォルダーにのみ適用されます。

3 この操作は、Exchange 2010 のパブリック フォルダーにのみ適用されます。

4 QueryString 検索オプションによる単一パブリック フォルダー内でのテキスト全体のインデックス付き検索は、Exchange 2013 以降の Exchange のバージョンでサポートされています。

5 ConvertId 操作では、パブリック フォルダーの識別子は EWS の識別子からストアの識別子に正しく変換されません。 回避策として、返された識別子を手動で更新してください。

次に示す操作は、Exchange 2013 以降の Exchange のバージョンではサポートされていません (または、部分的にサポートされています)。

  • CopyFolder (サポート対象外)。 CopyItems 操作で CreateFolder を使用すると、CopyFolder 操作の機能を実装できます。

  • EmptyFolder (サポート対象外)。 DeleteItem 操作で FindItem を使用すると、EmptyFolder 操作の機能を実装できます。

  • MoveFolder (部分的にサポート)。 プライベート フォルダーとパブリック フォルダーの間でフォルダーを移動することはできません。 Exchange 2007 と Exchange 2010 では、プライベート フォルダーとパブリック フォルダーの間でフォルダーを移動できます。 Exchange のすべてのバージョンで、パブリック フォルダー内でのフォルダーの移動が可能です。

EWS と EWS マネージ API では、パブリック フォルダーに対する次の機能がサポートされません。

  • SyncFolderHierarchy の使用。 パブリック フォルダー メールボックス内のアイテムとフォルダーを同期する場合は、FindFolderGetFolder、および SyncFolderItems の操作を使用します。

  • パブリック フォルダー階層の一括 (Deep Traversal) 検索。 パブリック フォルダー階層をスキャンする場合は、再帰的な FindFolder 操作の呼び出しを使用してください。

  • パブリック フォルダーのフォルダー階層を作成するための CreateFolderPath 操作の使用。 パブリック フォルダー メールボックスを対象にする場合は、別のフォルダー階層でフォルダー レベルごとに CreateFolder 操作を使用することが必要になります。

  • 送信した電子メール メッセージのコピーを保存するための CreateItem 操作の使用。 代わりに、MoveItem 操作を使用してメッセージのコピーをパブリック フォルダーに移動します。

パブリック フォルダーの操作に EWS と EWS マネージ API を使用するシナリオ

Exchange メールボックス ユーザーにとって重要なシナリオの多くは、パブリック フォルダーによって可能になります。 EWS と EWS マネージ API を使用して、パブリック フォルダーにアクセスしてそのコンテンツを使用するためのカスタム ソリューションを実装することで、ユーザーの能力を強化できます。

配布リストに送信された電子メール メッセージへのプログラムによるアクセス

Exchange メールボックスのユーザーは、配布リストに送信された電子メール メッセージを保存するために、パブリック フォルダーを使用できます。 これは、配布リストの履歴を保存する際に便利な方法です。 EWS の FindItem 操作、または EWS マネージ API の ExchangeService.FindItems() メソッドと Folder.FindItems() メソッドを使用すると、保存されている配布リストの電子メール メッセージにアクセスできます。

重要な電子メール メッセージなどのメールボックス アイテムの共有

メールボックス ユーザーは、メールボックス アイテムの共有リポジトリとしてパブリック フォルダーを使用できます。 組織内の異なるユーザーは、パブリック フォルダーを使用して重要な電子メール メッセージや連絡先を共有できます。 EWS により、このように共有されたメールボックスのアイテムにアクセスできます。 EWS の MoveItem 操作、または EWS マネージ API の Item.Move() メソッドを使用すると、電子メール メッセージや連絡先などのメールボックスのアイテムをパブリック フォルダーから出し入れできます。

投稿アイテムによるパブリック ディスカッション

パブリック フォルダーは、投稿アイテムの便利なコンテナーになります。 投稿アイテムは、ユーザー間で電子メールを送信することなく、スレッド化された会話を行う方法を提供します。 ユーザーは、組織内の異なるメールボックス ユーザー間のスレッド化された会話をホストおよび維持管理するために、パブリック フォルダーと投稿アイテムを使用できます。 この方法により、メールボックス ユーザーは、会話に加わっていない場合でも、投稿アイテムを使用する会話の共有された履歴にアクセスできます。 EWS の CreateItem 操作、または EWS マネージ API の Item.Save() メソッドを使用すると、パブリック フォルダーに保存される投稿アイテムの作成と応答が可能になります。

パブリック フォルダー要求のルーティング

パブリック フォルダーのコンテンツは、複数のメールボックス サーバーに保存できます。 パブリック フォルダー階層を保存するメールボックスと、パブリック フォルダーのコンテンツを保存するメールボックスを別にすることができます。 そのため、それらのサーバーとユーザーが情報を要求するメールボックス サーバーが異なることもあります。 このような場合は、追加の X-AnchorMailbox ヘッダーと X-PublicFolderMailbox ヘッダーをパブリック フォルダー要求に含めることで、パブリック フォルダーに関する正確な情報を受け取れるようにすることが重要です。

X-AnchorMailbox と X-PublicFolderMailbox の値は、実行している要求がフォルダー階層に関連するものか、フォルダー コンテンツに関連するものかによって異なることがあります。 次の表では、EWS マネージ API メソッドまたは EWS 操作ごとに従う手順を示しています。

パブリック フォルダーの要求をルーティングするための EWS マネージ API のメソッドと EWS の操作

呼び出すメソッド 呼び出す操作 使用する手順
Folder.FindFolders
Folder.Delete
Folder.Update
Folder.Move
CreateFolder
FindFolder
DeleteFolder
UpdateFolder
MoveFolder
パブリック フォルダー階層の要求をルーティングする
Item.Bind
Item.Update
Item.Copy
Item.Move
Item.Delete
Folder.Bind
Folder.FindItems
CreateItem
GetItem
UpdateItem
CopyItem
MoveItem
DeleteItem
GetFolder
FindItem
パブリック フォルダー コンテンツ要求をルーティングする

バージョンの相違点

Exchange 2007 と Exchange 2010 では、パブリック フォルダーの識別子を EWS 識別子からストア識別子に変換する ConvertId 操作は期待どおりに動作します。

関連項目