在 Python 中解析 Outlook PST 文件

PST (Personal Storage Table) 是微軟不同程序使用的一種存儲文件格式。 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 文件

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

  • 使用 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 的信息。此外,您可以在我們的論壇 上分享您的問題或疑問。

也可以看看