Đọc các tệp PST/OST bị hỏng

Đọc các tệp PST/OST bị hỏng

Trong một số trường hợp, tệp PST hoặc OST có thể trở nên không thể truy cập do hỏng hoặc bị tổn thương. Khi xảy ra điều này, Outlook có thể không mở được tệp, khiến việc truy xuất các email quan trọng và dữ liệu hộp thư khác trở nên khó khăn.

Aspose.Email cung cấp một API cho phép bạn quét và trích xuất các tin nhắn không hỏng từ tệp PST bị hỏng bằng cách sử dụng ID của tin nhắn và thư mục.

Các phương thức sau của PersonalStorage Các lớp là cần thiết để phục hồi dữ liệu từ tệp PST bị hỏng:

  • Truy xuất ID của Tin nhắn và Thư mục:

    find_messages(parent_entry_id) - lấy danh sách các ID tin nhắn trong một thư mục xác định.

    find_subfolders(parent_entry_id) - lấy danh sách các ID thư mục con trong một thư mục cho trước.

  • Truy cập Tin nhắn và Thư mục bằng ID của chúng:

    extract_message(entry_id) - trích xuất một tin nhắn từ tệp PST bằng cách sử dụng entry ID của nó.

    get_folder_by_id(entry_id) - lấy một thư mục từ tệp PST bằng cách sử dụng entry ID của nó.

Đoạn mã mẫu sau minh họa cách duyệt qua một tệp PST có khả năng bị hỏng, trích xuất các tin nhắn không hư hỏng và khám phá các thư mục con:

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)