Läsa korrupta PST/OST-filer

Läsa korrupta PST/OST-filer

I vissa fall kan en PST- eller OST-fil bli otillgänglig på grund av korruption eller skada. När det sker kan Outlook misslyckas med att öppna filen, vilket gör det svårt att hämta viktiga e‑postmeddelanden och annan postlådedata.

Aspose.Email tillhandahåller ett API som låter dig skanna och extrahera oskadade meddelanden från en korrupt PST-fil med hjälp av meddelande- och mapp‑ID:n.

Följande metoder i PersonalStorage klassen är avgörande för att återställa data från en korrupt PST-fil:

  • Hämta meddelande‑ och mapp‑ID:n:

    find_messages(parent_entry_id) – hämtar en lista med meddelande‑ID:n i en specificerad mapp.

    find_subfolders(parent_entry_id) – hämtar en lista med undermapp‑ID:n inom en given mapp.

  • Kom åt meddelanden och mappar med deras ID:n:

    extract_message(entry_id) – extraherar ett meddelande från PST-filen med dess entry‑ID.

    get_folder_by_id(entry_id) – hämtar en mapp från PST-filen med dess entry‑ID.

Följande kodexempel demonstrerar hur du navigerar genom en potentiellt korrupt PST-fil, extraherar oskadade meddelanden och utforskar undermappar:

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)