Читання пошкоджених файлів PST/OST

Читання пошкоджених файлів PST/OST

У деяких випадках файл PST або OST може стати недоступним через пошкодження або збій. У такій ситуації Outlook може не відкрити файл, що ускладнює отримання важливих листів та інших даних поштової скриньки.

Aspose.Email надає API, який дозволяє сканувати та витягувати недефектні повідомлення з пошкодженого файлу PST, використовуючи ідентифікатори повідомлень і папок.

Наступні методи класу PersonalStorage класів є важливими для відновлення даних з пошкодженого файлу PST:

  • Отримання ідентифікаторів повідомлень та папок:

    find_messages(parent_entry_id) — повертає список ідентифікаторів повідомлень у вказаній папці.

    find_subfolders(parent_entry_id) — отримує список ідентифікаторів підпапок у заданій папці.

  • Доступ до повідомлень та папок за їх ідентифікаторами:

    extract_message(entry_id) — витягує повідомлення з файлу PST за його entry ID.

    get_folder_by_id(entry_id) — отримує папку з файлу PST за її entry ID.

Наступний приклад коду демонструє, як переміщатися по потенційно пошкодженому файлу PST, витягувати недефектні повідомлення та досліджувати підпапки:

import aspose.email as ae

def explore_corrupted_pst(pst, root_folder_id):
    message_id_list = pst.find_messages(root_folder_id)

    for message_id in message_id_list:
        try:
            msg = pst.extract_message(message_id)
            print("- " + msg.subject)
        except Exception as e:
            print("Message reading error. Entry id: " + message_id)

    folder_id_list = pst.find_subfolders(root_folder_id)

    for sub_folder_id in folder_id_list:
        if sub_folder_id != root_folder_id:
            try:
                subfolder = pst.get_folder_by_id(sub_folder_id)
                print(subfolder.display_name)
            except Exception as e:
                print("Message reading error. Entry id: " + sub_folder_id)

            explore_corrupted_pst(pst, sub_folder_id)


pst = ae.storage.pst.PersonalStorage.from_file("target.pst")

explore_corrupted_pst(pst, pst.root_folder.entry_id_string)