Exchange 中的 EWS 中的文件夹和项目
了解文件夹和邮箱项目以及 EWS 托管 API 或 EWS 客户端如何表示它们。
文件夹是 Exchange 邮箱的组织元素。 文件夹可以包含邮箱项目,例如电子邮件、联系人、约会、会议和任务,也可以包含其他文件夹。 Exchange 包括不同类型的文件夹,但文件夹类型彼此相似。 它们之间的主要区别在于它们包含的项目类型。
但是,项具有唯一的类型。 每个项类型都有一组不同的属性或架构来定义它。 在本文中,我们将讨论可用的文件夹和项的类型以及它们之间的差异。
Folders
文件夹都派生自同一基类或基类型、EWS 托管 API 中的 Folder 类或 EWS 中的 Folder 类型。 下图显示了 EWS 托管 API 类和 EWS 类型。
图 1. EWS 托管 API 文件夹类和 EWS 文件夹类型
每个文件夹类和文件夹类型之间的主要区别在于,只能在每种类型的文件夹中创建特定类型的项目。 另一个区别在于客户端在文件夹中显示信息的方式。 例如,Exchange 允许您在“日历”文件夹中创建约会。 可以在创建项目后将其他类型的项目移动到“日历”文件夹中,但 Outlook 不会显示它们。 Outlook 仅显示日历文件夹中的约会和会议等日历项目, 即使文件夹中存在另一种类型的项目也是如此。
表 1. EWS 托管 API 文件夹类和 EWS 文件夹类型
EWS 托管 API 类 | EWS 类型 | FolderClass 值 | Contains | 注意 |
---|---|---|---|---|
Folder |
Folder |
Ipf。注意 |
Email邮件或文件夹。 |
这是以下 EWS 托管 API WellKnownFolderName 文件夹和 EWS DistinguishedFolderId 文件夹的泛型文件夹类或类型:
|
CalendarFolder |
CalendarFolder |
Ipf。委任 |
约会和会议。 |
当用户响应会议请求时,约会将仅添加到 EWS 托管 API WellKnownFolderName.Calendar 或 EWS DistinguishedFolderId.CalendarFolder 。 这些是支持与会议请求和响应自动交互的唯一文件夹。 此文件夹类或文件夹类型支持使用日历视图,通过使用 EWS 托管 API Folder.FindItem 方法和 CalendarView 类或 EWS FindItem 操作和 CalendarView 元素,根据开始日期和结束日期返回约会和会议。 |
ContactsFolder |
ContactsFolder |
Ipf。联系 |
联系人和通讯组列表。 |
无。 |
SearchFolder |
SearchFolder |
Ipf。注意 |
内容由限制或筛选器确定。 搜索文件夹没有子文件夹。 |
符合搜索条件的项目实际上未包含在搜索文件夹中;相反,它们位于邮箱中的其他位置。 若要确保“搜索”文件夹在 Outlook 中可用,请在 Finder 文件夹中创建它们。 |
TasksFolder |
TasksFolder |
Ipf。任务 |
包含要完成的工作项。 |
无。 |
文件夹结构
文件夹提供邮箱结构。 这包括 IPM 子树(称为 EWS 中信息存储的顶部),其中大多数用户与其邮箱交互,以及大多数用户从未看到的系统文件夹,这些文件夹位于 EWS 中的非 IPM 子树或根目录中。 下图显示了用户的文件夹结构,并指示哪些文件夹用于用户的项目,哪些文件夹是系统文件夹。
图 2. 邮箱中的项目和系统文件夹
已知文件夹
在邮箱中的文件夹中,有些文件夹是特殊文件夹。 这相当于 EWS 托管 API 中的已知文件夹,或 EWS 中的可分辨文件夹。 其中一些文件夹对文件夹名称、文件夹结构中的位置以及是否可以删除这些文件夹有限制。 其他“泛型” (非特殊) 文件夹没有相同的限制。 熟悉以下已知或可分辨文件夹非常重要,因为它们是根系统、用户和搜索文件夹,并且适用于大多数实现。
表 2. 主要已知文件夹和可分辨文件夹
友好名称 | EWS 托管 API WellKnownFolderName 值 | EWS DistinguishedFolderId 值 | 说明 |
---|---|---|---|
根 (非 IPM 子树) |
WellKnownFolderName.Root |
DistinguishedFolderId.root |
包含邮箱的根文件夹,也称为非 IPM 子树。 此文件夹没有父文件夹,不能移动、复制、重命名或删除它。 每个邮件存储仅包含一个根文件夹。 |
(IPM 子树) 的信息存储顶部 |
WellKnownFolderName.MsgFolderRoot |
DistinguishedFolderId.msgfolderroot |
包含收件箱和其他用户文件夹。 |
Finder (搜索文件夹) |
WellKnownFolderName.SearchFolders |
DistinguishedFolderId.searchfolders。 |
包含 Outlook 中可见的搜索文件夹。 |
有关 EWS 托管 API WellKnownFolderName 属性值的完整列表,请参阅 WellKnownFolderName 枚举。 有关 EWS DistinguishedFolderId 值的完整列表,请参阅 DistinguishedFolderId。
文件夹属性
在 EWS 托管 API 中, 文件夹属性 全部派生自基 Folder 类。 在 EWS 中,所有文件夹都使用文件夹类型上可用的 文件夹 元素。 大多数与文件夹相关的属性和元素 (父文件夹 ID、显示名称等) 都很简单,但一些属性和元素需要更多说明。
以下注意事项适用于 EWS 托管 API Folder.FolderClass 属性或 EWS FolderClass 元素:
如果设置,属性或元素的值必须与文件夹的派生类或类型一致。 例如, FolderClass 属性或元素不能指示文件夹是联系人文件夹,而文件夹的类或类型指示该文件夹是日历文件夹。
可以在不设置 FolderClass 属性或元素的情况下创建特定类型的文件夹,也可以创建具有泛型文件夹类型的文件夹并指定 FolderClass 属性或元素。 这两个选项创建相同的结果。
通过创建特定类型的文件夹或通过设置 FolderClass 属性或元素本身来设置 FolderClass 值后,无法对其进行更改。 例如,不能更改 IPF。将文件夹记下到 IPF。联系人文件夹。 但是,可以将其更改为 IPF。Note.Contoso 文件夹。
任何不使用预定义前缀之一的 FolderClass 值都被视为 IPF。记下文件夹。 例如,IAmAFolderClass 的 FolderClass 值被视为 IPF。记下文件夹。
文件夹类值是可扩展的。 这意味着表 1 中列出的默认 FolderClass 值被视为前缀,可以添加自定义值。 例如,可以创建一个文件夹,该 文件夹的 FolderClass 值为 IPF。Contact.Contoso,它被视为“联系人”文件夹。
可以使用 EWS 托管 API Folder.EffectiveRights 属性或 EWS EffectiveRights 元素来确定客户端对文件夹拥有哪些权限,例如删除、读取和修改。
公用文件夹
公用文件夹专为共享访问设计,为收集、组织信息及与您的工作组或组织中的其他人共享信息提供了一种轻松、有效的方式。 还可以使用公用文件夹存档通讯组内容。 有关公用文件夹的深入信息,请参阅 Exchange 中使用 EWS 访问公用文件夹。
隐藏文件夹
Exchange 在邮箱根目录中创建的所有文件夹都处于隐藏状态,您可以使用 EWS 托管 API 或 EWS 隐藏信息存储顶部下的其他文件夹。 有关隐藏文件夹的详细信息,请参阅 在 Exchange 中使用 EWS 处理隐藏文件夹。
搜索结果文件夹
搜索文件夹与常规文件夹类似,只是它们具有定义搜索筛选器的属性或元素。 可以在 Exchange 邮箱中的任何文件夹中创建搜索文件夹,并且创建方式与创建任何其他文件夹的方式相同。 但是,若要在 Outlook、Outlook Web App或 Outlook Live 中显示搜索文件夹,使用 EWS 托管 API 创建的 SearchFolder 对象必须位于 WellKnownFolderName.SearchFolders 文件夹中,而使用 EWS 创建的 SearchFolder 类型必须位于 DistinguishedFolderId.SearchFolders 文件夹中。 如果在其他位置创建搜索文件夹,则它仍然可用,你可以在自定义客户端应用程序中查看它。
项目
Exchange 中的 EWS 使用 项目 来表示邮箱中的单个电子邮件、约会、会议、联系人、通讯组列表、任务、帖子和其他项目。 项要么是强类型项,这意味着它们具有特定的关联类或架构,或者不是强类型(也称为泛型项)。 泛型项是 EWS 托管 API 中的 Item 对象和 EWS 中的 项 类型。 常见项目(如电子邮件、联系人、通讯组列表、帖子和任务)是强类型化的,你可以在它们上设置特定的架构化属性或元素。
表 3. 强类型项
EWS 托管 API 项类型 | EWS 项元素 |
---|---|
约会 |
CalendarItem |
联系人 |
联系人 |
ContactGroup |
DistributionList |
EmailMessage |
邮件 |
PostItem |
PostItem |
任务 |
任务 |
EWS 托管 API 强类型项派生自基 Item 类。 但是,通常使用表 3 中列出的派生类型之一,而不是直接使用 Item 类。 但是,使用 ItemCollection 类时,可以直接使用 Item 类的实例。 在这种情况下,应实现确定 Item 类实例所表示的存储中的项类型的逻辑。 若要使用该项,应使用表示该项的 类的实例绑定到该项。
文件夹中的项目
某些文件夹对可以包含的项目类型有限制。 这些是 Exchange 邮箱数据库应用于文件夹的限制,而不是客户端视图限制。
表 4. 文件夹的项目限制
EWS 托管 API 文件夹类 | EWS 文件夹类型 | 限制 |
---|---|---|
基文件夹类 |
Folder |
只能在通用文件夹中创建新的 EWS 托管 API EmailMessage 对象和 PostItem 对象或 EWS 消息 类型或 PostItem 类型。 可以将其他项类型移动到泛型文件夹中,但客户端可能不会显示它们。 |
CalendarFolder |
CalendarFolder |
只能在“日历”文件夹中创建新的 EWS 托管 API 约会 对象和 EWS CalendarItem 类型。 可以将其他项目类型移动到“日历”文件夹中,但客户端可能不会显示它们。 |
ContactsFolder |
ContactsFolder |
只能在“联系人”文件夹中创建新的 EWS 托管 API 联系人 和 ContactGroup 对象,或 EWS 联系人 类型或 DistributionList 类型。 可以将其他项目类型移动到“联系人”文件夹中,但客户端可能不会显示它们 |
SearchFolder |
SearchFolder |
无限制。 项目实际上不位于“搜索”文件夹中;它们位于邮箱中的其他位置。 |
TasksFolder |
TasksFolder |
只能在“ 任务” 文件夹中创建新的 EWS 托管 API 任务对象或 EWS 任务 类型。 可以将其他项目类型移到 Tasks 文件夹中,但客户端可能不会显示它们 |
从早期产品版本升级
在早期和当前产品版本中,文件夹大部分保持不变。 但请注意,早期版本的 Exchange 使用托管文件夹执行邮件记录管理, (MRM) 。 Exchange Online,Exchange Online作为Office 365的一部分,从 Exchange 2013 开始的 Exchange 版本对 MRM 使用保留策略。 可以 升级托管文件夹以使用保留策略。
在早期和当前产品版本中,项未更改。