Lecture de fichiers PST/OST corrompus

Lecture de fichiers PST/OST corrompus

Dans certains cas, un fichier PST ou OST peut devenir inaccessible à cause d’une corruption ou d’un dommage. Lorsque cela se produit, Outlook peut ne pas pouvoir ouvrir le fichier, rendant difficile la récupération d’e‑mails importants et d’autres données de la boîte aux lettres.

Aspose.Email fournit une API qui vous permet de scanner et d’extraire les messages intacts d’un fichier PST corrompu en utilisant les ID de messages et de dossiers.

Les méthodes suivantes de la PersonalStorage Les classes sont essentielles pour récupérer les données d’un fichier PST corrompu :

  • Récupérer les ID de messages et de dossiers :

    find_messages(parent_entry_id) – récupère une liste d’ID de messages dans un dossier spécifié.

    find_subfolders(parent_entry_id) – obtient une liste d’ID de sous‑dossiers dans un dossier donné.

  • Accéder aux messages et dossiers en utilisant leurs ID :

    extract_message(entry_id) – extrait un message du fichier PST en utilisant son ID d’entrée.

    get_folder_by_id(entry_id) – récupère un dossier du fichier PST en utilisant son ID d’entrée.

L’exemple de code suivant montre comment parcourir un fichier PST potentiellement corrompu, extraire les messages intacts et explorer les sous‑dossiers :

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)