Lesen beschädigter PST/OST‑Dateien

Lesen beschädigter PST/OST‑Dateien

In manchen Fällen kann eine PST‑ oder OST‑Datei aufgrund von Beschädigung oder Schaden unzugänglich werden. Dann kann Outlook die Datei nicht öffnen, was das Abrufen wichtiger E‑Mails und anderer Postfachdaten erschwert.

Aspose.Email stellt eine API bereit, mit der Sie mithilfe von Nachrichten‑ und Ordner‑IDs unbeschädigte Nachrichten aus einer beschädigten PST‑Datei scannen und extrahieren können.

Die folgenden Methoden der PersonalStorage Klassen sind essenziell für die Wiederherstellung von Daten aus einer beschädigten PST‑Datei:

  • Nachrichten‑ und Ordner‑IDs abrufen:

    find_messages(parent_entry_id) – ruft eine Liste von Nachrichten‑IDs innerhalb eines bestimmten Ordners ab.

    find_subfolders(parent_entry_id) – liefert eine Liste von Unterordner‑IDs innerhalb eines angegebenen Ordners.

  • Zugriff auf Nachrichten und Ordner mittels ihrer IDs:

    extract_message(entry_id) – extrahiert eine Nachricht aus der PST‑Datei anhand ihrer Entry‑ID.

    get_folder_by_id(entry_id) – ruft einen Ordner aus der PST‑Datei anhand seiner Entry‑ID ab.

Das folgende Code‑Beispiel demonstriert, wie man durch eine potenziell beschädigte PST‑Datei navigiert, unbeschädigte Nachrichten extrahiert und Unterordner durchsucht:

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)