PST (Personal Storage Table) — это формат файла хранилища, который используется различными программами Microsoft. Файлы PST способны хранить данные сообщений, контактов, календарей, событий и т. д. Они используются популярными программами Microsoft, такими как MS Outlook, Exchange и Windows Messaging. В некоторых случаях вам может потребоваться проанализировать файл PST и извлечь из него данные программным путем. Для этого в этой статье показано, как анализировать файлы PST из приложений Python.
- Библиотека Python для анализа файлов PST
- Разобрать файл PST в Python
- Извлечение сообщений из файла PST
- Извлечь контакты из файла PST
Библиотека 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, используя документацию. Кроме того, вы можете поделиться своими вопросами или запросами на нашем форуме.