使用 EWS 在 Exchange 公用文件夹访问。

了解如何使用 EWS 和 EWS 托管 API 访问 Exchange 中的公用文件夹和路由公用文件夹请求。

公用文件夹提供组织中的用户可以访问的项目的共享存储库。 从 Exchange 2013 开始,Office 365、Exchange Online和本地版本的 Exchange 引入了公用文件夹的新体系结构。 Exchange 中的公用文件夹使用专用邮箱设计 (而不是公用文件夹数据库) 来存储公用文件夹层次结构和公用文件夹内容。 公用文件夹权限通过基于角色访问控制 (RBAC) 进行管理。

客户端访问技术(如 Exchange Web Services (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 和 2010 Exchange Server 中的公用文件夹。

3 此操作仅适用于 Exchange 2010 中的公用文件夹。

4 从 Exchange 2013 开始的 Exchange 版本中支持通过 QueryString 搜索选项在单个公用文件夹中进行全文索引搜索。

5 ConvertId 操作无法将公用文件夹标识符从 EWS 标识符正确转换为存储标识符。 可以手动更新作为 解决方法返回的标识符。

从 Exchange 2013 开始,Exchange 版本中的公用文件夹不支持或部分支持以下操作:

  • 不支持 CopyFolder () 。 可以将 CreateFolderCopyItems 操作配合使用来实现 CopyFolder 操作功能。

  • EmptyFolder (不支持) 。 可以将 FindItemDeleteItem 操作一起使用,以实现 EmptyFolder 操作功能。

  • MoveFolder (部分支持的) 。 不能在专用文件夹和公用文件夹之间移动文件夹。 可以在 Exchange 2007 和 Exchange 2010 中的专用文件夹和公用文件夹之间移动文件夹。 可以在所有版本的 Exchange 中移动公用文件夹中的文件夹。

EWS 和 EWS 托管 API 不支持以下公用文件夹功能:

  • 使用 SyncFolderHierarchy。 使用 FindFolderGetFolderFindItemGetItem 操作同步公用文件夹邮箱中的项目和文件夹。

  • 公用文件夹层次结构的深层遍历搜索。 使用递归 FindFolder 操作调用遍历公用文件夹层次结构。

  • 使用 CreateFolderPath 操作为公用文件夹创建文件夹层次结构。 面向公用文件夹邮箱时,需要对不同文件夹层次结构中的每个文件夹级别使用 CreateFolder 操作。

  • 使用 CreateItem 操作保存已发送电子邮件的副本。 请改用 MoveItem 操作将邮件的副本移动到公用文件夹中。

使用 EWS 和 EWS 托管 API 处理公用文件夹的方案

公用文件夹为 Exchange 邮箱用户提供了许多重要方案。 可以使用 EWS 和 EWS 托管 API 实现自定义解决方案来访问和使用公用文件夹及其内容。

以编程方式访问已发送到通讯组列表的电子邮件

Exchange 邮箱用户可以使用公用文件夹来存储发送到通讯组列表的电子邮件。 这是保存通讯组列表历史记录的便捷方法。 可以使用 EWS 中的 FindItem 操作ExchangeService.FindItems () Folder.FindItems () EWS 托管 API 中的方法来访问存储的通讯组列表电子邮件。

共享重要电子邮件和其他邮箱项目

邮箱用户可以将公用文件夹用作邮箱项目的共享存储库。 组织中的不同用户可以使用公用文件夹共享重要的电子邮件或联系人。 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 操作按预期工作。

另请参阅