Четене на повредени PST/OST файлове

Четене на повредени PST/OST файлове

В някои случаи PST или OST файл може да стане недостъпен поради корупция или повреда. Когато това се случи, Outlook може да не успее да отвори файла, което затруднява извличането на важни имейли и други данни от пощенската кутия.

Aspose.Email предоставя API, което ви позволява да сканирате и извлечете недефектни съобщения от повреден PST файл, използвайки ID-та на съобщения и папки.

Следните методи на PersonalStorage класовете са от съществено значение за възстановяване на данни от повреден PST файл:

  • Извличане на ID-та на съобщения и папки:

    find_messages(parent_entry_id) - извлича списък с ID-та на съобщения в определена папка.

    find_subfolders(parent_entry_id) - получава списък с ID-та на подпапки в дадена папка.

  • Достъп до съобщения и папки, използвайки техните 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)