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 的更多信息。此外,您可以在我们的 论坛 上分享您的问题或疑问。