MAPI 接收文件夹

适用于:Outlook 2013 | Outlook 2016

接收文件夹保存特定邮件类的入站邮件。 接收文件夹关联可以由客户端、邮件存储提供程序或 MAPI 建立。 MAPI 具有两个默认接收文件夹:邮件存储的根文件夹和人际邮件的收件箱文件夹 (IPM) 子树。 消息存储的根文件夹是所有进程间通信的默认接收文件夹, (IPC) 邮件。

“收件箱”文件夹由 MAPI 为每个新邮件存储创建,并充当以下邮件类的默认接收文件夹:

  • IPM 消息类。

  • 报表消息类。

  • 类为空或缺失。

所有报告邮件(即使是为响应 IPC 邮件而发送的邮件)都放置在“收件箱”文件夹中。 处理其自己的报表的 IPC 客户端应用程序必须显式添加特定报表类的接收文件夹。 例如,如果客户端希望接收具有 IPC 类的消息。Paper.Order,它应调用 IMsgStore::SetReceiveFolder 方法,以使用类 Report.IPC.Paper.Order 为报表建立接收文件夹。

接收文件夹关联基于邮件类的分层组织。 客户端可以在接收文件夹和邮件类之间显式建立关联,也可以使用 MAPI 默认接收文件夹。 通常,客户端指定一个文件夹来接收基类及其所有子类的消息。 例如,典型的客户端会与 MyClass 类建立消息的关联。 然后,如果客户端收到包含 MyClass.Home 或 MyClass.Home.Kitchen.Computer 类的邮件,这些邮件将转到基类 MyClass 的接收文件夹。

客户端可以使用三种消息存储方法来处理接收文件夹:

接收文件夹表是有关为邮件存储建立的所有接收文件夹的信息列表。 其所需的列集包括消息类、记录键和条目标识符。

若要检索特定邮件类的接收文件夹,客户端会将邮件类字符串传递给 IMsgStore::GetReceiveFolder 方法。 邮件存储提供程序返回相应文件夹的条目标识符。 若要实现 GetReceiveFolder,消息存储提供程序应使用一种算法来选择其关联邮件类与指定邮件类的最长前缀匹配的文件夹。 例如,假设邮件存储在其接收文件夹表中的接收文件夹和邮件类之间具有以下关联:

  • IPM 邮件放置在“收件箱”文件夹中。

  • Ipm。注意.示例 邮件放置在 Samples 文件夹中。

下表显示了如何将具有各种类的邮件路由到相应的接收文件夹。

入站消息类 接收文件夹
Ipm。Note.Sample.Simple
Samples 文件夹
Ipm。注意
收件箱文件夹
Ipm。Timecard
收件箱文件夹
Ipm。Note.Sample.Simple.Totally
Samples 文件夹

客户端调用 SetReceiveFolder 方法以在特定邮件类和接收文件夹之间建立显式关联。 将邮件传递到空邮件类时,MAPI 会将邮件置于为空类的前缀定义的接收文件夹中。 例如,如果客户端为具有 IPM 类的邮件和具有 IPM 类的邮件建立了接收文件夹 。注意.测试 已传递,此邮件将放置在 IPM 邮件类的接收文件夹中。

在调用 SetReceiveFolder 时,客户端通常传递邮件类字符串和新接收文件夹的条目标识符。 但是,客户端可以为其中一个或两个参数传入 NULL。 下表描述了为消息类和条目标识符参数指定 NULL 导致的行为。

SetReceiveFolder 参数 结果行为
条目标识符设置为 NULL
邮件存储删除指定邮件类与其现有接收文件夹之间的关联。 未建立新的接收文件夹。 使用此邮件类对 GetReceiveFolder 的后续调用将返回邮件类前缀的接收文件夹;对于新邮件存储, GetReceiveFolder 将返回 IPM 子树中的收件箱。
消息类设置为 NULL
邮件存储将空邮件类的关联更改为指定的文件夹。 类否则无法识别的传入邮件将转到此文件夹。
条目标识符和消息类设置为 NULL
邮件存储删除空邮件类的类/文件夹关联。 不应将这两个参数都设置为 NULL,因为这通常会导致入站邮件放置在邮件存储的根文件夹中,该文件夹对客户端不可见。

虽然消息的类永远不应为空,但可能会出现空消息类。 消息存储负责将消息类分配给具有空类的新出站消息的 IPM :传输提供商负责分配 IPM。请注意 ,对于具有任何空类的入站消息,请将其作为 类。

另请参阅

MAPI 文件夹