在 Python 中解析 Outlook PST 文件

PST(个人存储表) 是不同 Microsoft 程序使用的存储文件格式。 PST 文件能够保存消息、联系人、日历、事件等的数据。它被流行的 Microsoft 软件使用,例如 MS Outlook、Exchange 和 Windows Messaging。在某些情况下,您可能需要解析 PST 文件并以编程方式从中提取数据。为此,本文展示了如何从 Python 应用程序中解析 PST 文件。

解析 PST 文件的 Python 库

为了解析 PST 文件,我们将使用 Aspose.Email for Python。它是一个强大的 Python 库,可让您无缝实现功能丰富的电子邮件客户端。此外,它还允许您使用流行的电子邮件和存储格式。您可以使用以下命令从 PyPI 安装库。

> pip install Aspose.Email-for-Python-via-NET

在 Python 中解析 PST 文件

以下是解析 PST 文件并在 Python 中提取其信息的步骤。

  • 使用 PersonalStorage.fromfile() 方法加载 PST 文件。
  • 使用 PersonalStorage.rootfolder.getsubfolders() 方法获取 PST 中的文件夹集合。
  • 检索文件夹的信息,例如名称、项目数等。

以下代码示例显示了如何解析 PST 文件并获取文件夹的信息。

from aspose.email import PersonalStorage

# 加载 PST 文件
personalStorage = PersonalStorage.from_file("Outlook.pst")

# 获取文件夹的集合
folderInfoCollection = personalStorage.root_folder.get_sub_folders()

# 提取文件夹信息
for folderInfo in folderInfoCollection:
	print("Folder: " + folderInfo.display_name)
	print("Total Items: " + str(folderInfo.content_count))
	print("Total Unread Items: " + str(folderInfo.content_unread_count))

在 Python 中从 PST 文件中提取消息

消息是由 Microsoft 程序(例如 MS Outlook)存储在 PST 文件中的主要实体。那么让我们看看如何在 Python 中从 PST 文件中提取消息。

  • 使用 PersonalStorage.fromfile() 方法加载 PST 文件。
  • 使用 PersonalStorage.rootfolder.getsubfolder() 方法获取对象中所需文件夹的引用。
  • 使用 getcontents() 方法获取消息集合。
  • 遍历集合中的消息并读取每个消息的字段。

以下代码示例展示了如何在 Python 中从 PST 文件中提取消息。

from aspose.email import PersonalStorage

# 加载 PST 文件
sourcePst = PersonalStorage.from_file("Outlook.pst")

# 选择所需的文件夹
sourceFolder = sourcePst.root_folder.get_sub_folder("Inbox")

# 获取文件夹中的内容
messageInfoCollection = sourceFolder.get_contents()

# 循环浏览文件夹中的消息
for messageInfo in messageInfoCollection:
        print ("Subject: " + messageInfo.subject)
        print("To: " + messageInfo.display_to)

在 Python 中从 PST 文件中提取联系人

在某些情况下,您可能需要提取存储在 PST 文件中的联系人信息。以下步骤显示了如何在 Python 中访问 PST 文件中的联系人。

  • 使用 PersonalStorage.fromfile() 方法加载 PST 文件。
  • 使用 getpredefinedfolder(StandardIpmFolder.CONTACTS) 方法获取联系人文件夹的引用。
  • 使用 getcontents() 方法获取联系人集合。
  • 循环浏览集合并阅读每个联系人或保存它。

以下代码示例展示了如何在 Python 中从 PST 文件中提取联系人。

from aspose.email import PersonalStorage, StandardIpmFolder, ContactSaveFormat

# 加载 PST 文件
pst = PersonalStorage.from_file("SampleContacts_out.pst")

# 选择联系人文件夹				
folderInfo = pst.get_predefined_folder(StandardIpmFolder.CONTACTS)

# 获取联系人
contactCollection = folderInfo.get_contents()

# 循环访问联系人集合
for  messageInfo in contactCollection:

    # 获取联系信息
    mapi = pst.extract_message(messageInfo)

    contact = mapi.to_mapi_message_item()

    # 在屏幕上显示一些内容
    print("Name: " + contact.name_info.display_name)

    # 以 MSG 格式保存到光盘
    if contact.name_info.display_name is not None:
        # 保存联系人
        contact.save("Contacts\\" + contact.name_info.display_name + "_out.msg")
        contact.save("Contacts\\" + contact.name_info.display_name + "_out.vcf", ContactSaveFormat.VCARD)

获取免费 API 许可证

您可以通过 获得临时许可证 免费试用 Aspose.Email for Python。

结论

在本文中,您学习了如何在 Python 中解析 PST 文件。此外,您还了解了如何在 Python 中以编程方式从 PST 文件中提取联系人和消息。此外,您可以使用 文档 探索有关 Aspose.Email 的更多信息。此外,您可以在我们的 论坛 上分享您的问题或疑问。

也可以看看