打开邮件存储文件夹

适用于:Outlook 2013 | Outlook 2016

在打开任何文件夹之前,其条目标识符必须可用。 对于大多数文件夹,这意味着检索其 PR_ENTRYID 属性。 对于特殊文件夹(例如某些 IPM 子树文件夹和其他根文件夹),MAPI 定义了可通过调用消息存储的 IMAPIProp::GetProps 方法访问的特殊条目标识符属性。 这些条目标识符始终是长期的,其名称如下:

Folder 条目标识符属性
发件箱文件夹
PR_IPM_OUTBOX_ENTRYID (PidTagIpmOutboxEntryId) (IPM 邮件类仅)
“已删除邮件”文件夹
PR_IPM_WASTEBASKET_ENTRYID (PidTagIpmWastebasketEntryId)
“已发送邮件”文件夹
PR_IPM_SENTMAIL_ENTRYID (PidTagIpmSentMailEntryId)
IPM 根文件夹
PR_IPM_SUBTREE_ENTRYID (PidTagIpmSubtreeEntryId)
搜索结果根文件夹
PR_FINDER_ENTRYID (PidTagFinderEntryId)
常见视图根文件夹
PR_COMMON_VIEWS_ENTRYID (PidTagCommonViewsEntryId)
个人视图根文件夹
PR_VIEWS_ENTRYID (PidTagViewsEntryId)
联系人根文件夹
PR_IPM_CONTACT_ENTRYID (PidTagIpmContactEntryId)
草稿根文件夹
PR_IPM_DRAFTS_ENTRYID (PidTagIpmDraftsEntryId)
日记根文件夹
PR_IPM_JOURNAL_ENTRYID (PidTagIpmJournalEntryId)
日历根文件夹
PR_IPM_APPOINTMENT_ENTRYID (PidTagIpmAppointmentEntryId)
Notes 根文件夹
PR_IPM_NOTE_ENTRYID (PidTagIpmNoteEntryId)
任务根文件夹
PR_IPM_TASK_ENTRYID (PidTagIpmTaskEntryId)

在尝试检索这些特殊条目标识符之一之前,请检索消息存储的 PR_VALID_FOLDER_MASK (PidTagValidFolderMask) 属性。 PR_VALID_FOLDER_MASK 是一个位掩码,用于标识存在哪些特殊条目标识符。 每个特殊文件夹都有一个位。 如果设置了位,则表示支持相应的文件夹并具有有效的条目标识符。 例如,如果“已删除邮件”文件夹存在并且具有有效的条目标识符,则将在 PR_VALID_FOLDER_MASK 中设置 FOLDER_IPM_WASTEBASKET_VALID位。

打开放置特定类的所有传入邮件的文件夹

  1. 调用 IMsgStore::GetReceiveFolder 以检索其入口标识符,并将 lpszMessageClass 参数设置为指向标识消息类的字符串。 例如,如果要打开 IPM 子树的收件箱,请将 lpszMessageClass 指向 IPM。 如果要打开 IPC 邮件的接收文件夹,请将其设置为指向 IPC。

    如果邮件类没有已注册的接收文件夹, GetReceiveFolder 将选择其关联的邮件类与传入的邮件类的最长可能前缀匹配的接收文件夹。 有关详细信息,请参阅 MAPI 接收文件夹

    请注意, PR_IPM_OUTBOX_ENTRYID 属性仅用于打开 IPM 邮件的发件箱文件夹。 如果要打开 IPC 邮件的发件箱,请改用其接收文件夹的条目标识符。 传入和传出 IPC 邮件都放置在接收文件夹中。

  2. 调用四种 OpenEntry 方法之一以打开文件夹并返回可用于访问它的接口指针。 可以调用以下任一方法打开文件夹:

    选择的特定方法取决于要打开的文件夹和当时可用的对象。 由于 IMAPISession 方法可以为当前配置文件中的任何邮件存储打开任何文件夹,因此,如果对要打开的文件夹没有任何了解,请调用此 OpenEntry 。 如果知道哪个邮件存储拥有文件夹,并且你有指向消息存储的指针,请调用 IMsgStore::OpenEntry

    例如,使用 IMsgStore 方法打开接收文件夹。 如果有指向消息存储提供程序登录对象的指针,请调用 IMSLogon::OpenEntry。 由于这些调用直接转到消息存储提供程序,而不是通过 MAPI,因此处理速度更快。 如果要打开的文件夹是已打开的文件夹的子文件夹,请调用打开文件夹的 IMAPIContainer::OpenEntry 方法。 IMAPIContainer 方法仅打开当前打开的文件夹的子文件夹,并且是唯一保证使用短期条目标识符的方法。

  3. 如果希望能够对要打开的文件夹进行更改,请在 OpenEntry 调用中设置 MAPI_BEST_ACCESS 或 MAPI_MODIFY 标志来指定访问级别。 这些标志建议邮件存储提供程序在打开文件夹时授予MAPI_MODIFY的最高级别访问权限(MAPI_BEST_ACCESS或读/写访问权限)。

    由于这些标志只是建议,因此文件夹可能打开,也可能不按预期的访问级别打开。 通过检索 PR_ACCESS (PidTagAccess) 属性,可以确定可以对打开的文件夹执行的操作范围。

    但是,由于许多邮件存储提供程序按需计算此属性的值,而不是将其作为文件夹属性或层次结构表中的列支持,因此检索它可能很耗时。 另一种策略是尝试执行所需的任何操作,并在必要时返回错误。

另请参阅