Анализ PST-файлов Outlook в Python

PST (Personal Storage Table) — это формат файла хранилища, который используется различными программами Microsoft. Файлы PST способны хранить данные сообщений, контактов, календарей, событий и т. д. Они используются популярными программами Microsoft, такими как MS Outlook, Exchange и Windows Messaging. В некоторых случаях вам может потребоваться проанализировать файл PST и извлечь из него данные программным путем. Для этого в этой статье показано, как анализировать файлы PST из приложений Python.

Библиотека Python для анализа файлов PST

Для анализа файлов PST мы будем использовать Aspose.Email для Python. Это мощная библиотека Python, которая позволяет легко внедрять многофункциональные почтовые клиенты. Кроме того, он позволяет работать с популярными форматами электронной почты и хранилища. Вы можете установить библиотеку из PyPI с помощью следующей команды.

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

Разобрать файл PST в Python

Ниже приведены шаги для анализа файла PST и извлечения его информации в Python.

  • Загрузите файл PST, используя метод PersonalStorage.fromfile().
  • Получите коллекцию папок в PST, используя метод PersonalStorage.rootfolder.getsubfolders().
  • Получить информацию о папках, такую как имя, количество элементов и т. д.

В следующем примере кода показано, как анализировать файл PST и получать информацию о папках.

from aspose.email import PersonalStorage

# Load PST file
personalStorage = PersonalStorage.from_file("Outlook.pst")

# Get folders' collection
folderInfoCollection = personalStorage.root_folder.get_sub_folders()

# Extract folders' information
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))

Извлечение сообщений из файла PST в Python

Сообщения — это основные объекты, которые хранятся в файлах PST программами Microsoft, такими как MS Outlook. Итак, давайте посмотрим, как извлечь сообщения из файла PST в Python.

  • Загрузите файл PST, используя метод PersonalStorage.fromfile().
  • Получите ссылку на нужную папку в объекте, используя метод PersonalStorage.rootfolder.getsubfolder().
  • Получить коллекцию сообщений с помощью метода getcontents().
  • Прокрутите сообщения в коллекции и прочитайте поля каждого сообщения.

В следующем примере кода показано, как извлечь сообщения из PST-файла в Python.

from aspose.email import PersonalStorage

# Load PST file
sourcePst = PersonalStorage.from_file("Outlook.pst")

# Select desired folder
sourceFolder = sourcePst.root_folder.get_sub_folder("Inbox")

# Get content in the folder
messageInfoCollection = sourceFolder.get_contents()

# Loop through messages in folder
for messageInfo in messageInfoCollection:
        print ("Subject: " + messageInfo.subject)
        print("To: " + messageInfo.display_to)

Извлечение контактов из файла PST в Python

В некоторых случаях вам может потребоваться извлечь информацию о контактах, хранящуюся в файле PST. Следующие шаги показывают, как получить доступ к контактам в файле PST в Python.

  • Загрузите файл PST, используя метод PersonalStorage.fromfile().
  • Получите ссылку на папку контактов, используя метод getpredefinedfolder(StandardIpmFolder.CONTACTS).
  • Получить коллекцию контактов с помощью метода getcontents().
  • Прокрутите коллекцию и прочитайте каждый контакт или сохраните его.

В следующем примере кода показано, как извлечь контакты из PST-файла в Python.

from aspose.email import PersonalStorage, StandardIpmFolder, ContactSaveFormat

# Load PST file
pst = PersonalStorage.from_file("SampleContacts_out.pst")

# Select contacts folder				
folderInfo = pst.get_predefined_folder(StandardIpmFolder.CONTACTS)

# Get contacts
contactCollection = folderInfo.get_contents()

# Loop through contacts collection
for  messageInfo in contactCollection:

    # Get the contact information
    mapi = pst.extract_message(messageInfo)

    contact = mapi.to_mapi_message_item()

    # Display some contents on screen
    print("Name: " + contact.name_info.display_name)

    # Save to disc in MSG Format
    if contact.name_info.display_name is not None:
        # Save contact
        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 для Python, получив временную лицензию.

Вывод

В этой статье вы узнали, как анализировать файлы PST в Python. Кроме того, вы видели, как программно в Python извлекать контакты и сообщения из PST-файла. Кроме того, вы можете узнать больше об Aspose.Email, используя документацию. Кроме того, вы можете поделиться своими вопросами или запросами на нашем форуме.

Смотрите также