读取 Outlook PST 文件,检索文件夹和子文件夹信息
Aspose.Email for .NET 提供了读取 Microsoft Outlook PST 文件的 API。您可以从磁盘或流中加载 PST 文件到以下类的实例中: PersonalStorage 类用于访问其内容的详细信息,如文件夹、子文件夹和邮件。此外,API 还提供在从 PST 文件夹检索邮件时包含 搜索文件夹 的功能。
加载 PST 文件
可以在以下类的实例中加载 Outlook PST 文件: PersonalStorage 类。以下代码片段展示了如何加载 PST 文件。
显示 PST 信息
之后 加载 PST 文件,您可以获取文件的显示名称、根文件夹、子文件夹以及邮件数量等信息。以下代码片段展示了如何显示 PST 文件名称、文件夹以及文件夹中的邮件数量:
仅获取用户创建的文件夹
PST/OST 文件可能包含用户创建的文件夹,即排除所有标准 IPM 文件夹。Aspose.Email 通过使用该类的 only_folders_created_by_user 属性提供仅访问用户创建的文件夹的功能。 PersonalStorageQueryBuilder 类。您可以将此属性设为 True,以仅获取用户创建的文件夹。以下代码片段演示了如何在项目中使用 only_folders_created_by_user 属性:
import aspose.email as ae
pst = ae.storage.pst.PersonalStorage.from_file("my.pst")
query_builder = ae.storage.pst.PersonalStorageQueryBuilder()
query_builder.only_folders_created_by_user.equals(True)
folders = pst.root_folder.get_sub_folders(query_builder.get_query())
for folder in folders:
print(f"Folder: {folder.display_name}")
识别预定义文件夹
要确定 PST 文件中的文件夹是否为标准文件夹,请使用该类的 get_predefined_type 方法。 FolderInfo 类。标准(或预定义)文件夹与用户创建的文件夹相对,指的是 Outlook 在添加电子邮件账户时自动创建的文件夹,如收件箱、已发送邮件、草稿、已删除邮件、日历、任务、笔记等。
下面的代码示例演示了如何在项目中使用此方法。设置为 True 时,返回顶级父文件夹的预定义类型,以确定当前文件夹是否为预定义文件夹的子文件夹。设置为 False 时,返回当前文件夹的预定义类型。
import aspose.email as ae
pst = ae.storage.pst.PersonalStorage.from_file("my.pst")
folders = pst.root_folder.get_sub_folders()
for folder in folders:
print(f"Folder: {folder.display_name}")
print(f"Is predefined: {folder.get_predefined_type(False) != ae.storage.pst.StandardIpmFolder.UNSPECIFIED}")
print("-----------------------------------")
在 PersonalStorage 中管理 RSS 订阅
Aspose.Email 提供了获取 RSS 订阅预定义文件夹引用的功能,允许开发者以编程方式访问和操作存储在 Outlook PST 文件中的 RSS 订阅。通过获取 "RSS 订阅文件夹" 的引用,开发者可以处理 RSS 订阅数据,包括订阅新源、更新现有源或提取源信息。
RssFeeds 在其中的取值为 StandardIpmFolder 该枚举通常表示专用于在 Outlook PST 文件中存储 RSS 订阅的预定义文件夹类型。使用此枚举值,开发者可以以编程方式定位并操作 "RSS 订阅文件夹"。以下代码示例将演示如何在项目中实现此功能:
import aspose.email as ae
pst = ae.storage.pst.PersonalStorage.from_file("my.pst")
rss_folder = pst.get_predefined_folder(ae.storage.pst.StandardIpmFolder.RSS_FEEDS)
要 添加 RSS 订阅文件夹,请使用以下代码片段:
import aspose.email as ae
pst = ae.storage.pst.PersonalStorage.from_file("my.pst")
rss_folder = pst.create_predefined_folder("RSS Feeds", ae.storage.pst.StandardIpmFolder.RSS_FEEDS)
解析可搜索文件夹
Aspose.Email 提供了一个 FolderKind 枚举用于处理不同类型的 PST 文件夹。除了 NORMAL 文件夹外,它还支持 SEARCH 文件夹。SEARCH 文件夹是一种虚拟文件夹,提供符合特定搜索条件的所有邮件项的视图。要解析 SEARCH 文件夹,请使用以下代码片段:
import aspose.email as ae
pst = ae.storage.pst.PersonalStorage.from_file("my.pst")
folders = pst.root_folder.get_sub_folders(ae.storage.pst.FolderKind.SEARCH | ae.storage.pst.FolderKind.NORMAL)
# Browse through each folder to display folder name and number of messages
for folder in folders:
print(f"Folder: {folder.display_name}")
sub_folders = folder.get_sub_folders(ae.storage.pst.FolderKind.SEARCH | ae.storage.pst.FolderKind.NORMAL)
for sub_folder in sub_folders:
print(f"Sub-folder: {folder.display_name}")
检索父文件夹信息
以下代码片段展示了如何从中检索父文件夹信息 MessageInfo.
通过路径检索 PST 子文件夹
要通过路径检索 PST 子文件夹,请使用该类的 get_sub_folder 方法。 FolderInfo 类。它检索目录或文件系统中的特定子文件夹。
该方法接受以下参数:
-
name - 表示需要检索的子文件夹名称,用于指定方法应搜索的子文件夹名称或标识符。
-
ignore_case - 是一个布尔值,决定方法在比较子文件夹名称时是否忽略大小写。设为 True 时,方法将不区分大小写进行匹配(例如 “folder” 与 “Folder” 被视为相同)。设为 False 时,将进行区分大小写的比较。
-
handle_path_separator - 是一个布尔值,指定在搜索子文件夹时方法是否应处理路径分隔符。路径分隔符是用于在目录路径中分隔文件夹的字符(例如 Windows 中的 "\" 或 Unix 中的 "/")。设为 True 时,方法会自动处理路径分隔符,确保正确的文件夹匹配。设为 False 时,路径分隔符将被视为子文件夹名称的一部分,从而导致不同的搜索行为。
以下代码示例展示了如何通过路径检索 PST 子文件夹:
import aspose.email as ae
pst = ae.storage.pst.PersonalStorage.from_file("my.pst")
# In this sample, the method will return a ‘Jan’ named folder
# that is located at the Inbox\Reports\ path
# relative to the root folder.
folder = pst.root_folder.get_sub_folder("Inbox\Reports\Jan", True, True)