Cara Mengurai File MSG di Python

Cara Mengurai File MSG di Python

aspose-email-foss untuk Python menyediakan API pure-Python untuk membaca file Outlook MSG tanpa ketergantungan Microsoft Office. Muat sebuah file ke dalam objek MapiMessage untuk mengakses semua data pesan.

Panduan Langkah-demi-Langkah

Langkah 1: Instal Paket

pip install aspose-email-foss

Membutuhkan Python 3.10 atau yang lebih baru.


Langkah 2: Impor Kelas MapiMessage

from aspose.email_foss.msg import MapiMessage

Langkah 3: Muat File MSG

msg = MapiMessage.from_file("message.msg")

Untuk parsing yang toleran terhadap file yang rusak, lewati strict=False:

msg = MapiMessage.from_file("message.msg", strict=False)

Langkah 4: Akses Properti Pesan

print(f"Subject: {msg.subject}")
print(f"Body: {msg.body}")
print(f"HTML Body: {msg.body_html[:200] if msg.body_html else 'None'}")
print(f"Message Class: {msg.message_class}")

Langkah 5: Daftar Lampiran

for att in msg.iter_attachments_info():
    name = att.storage_name
    is_embedded = att.is_embedded_message
    print(f"Attachment: {name}, embedded={is_embedded}")

Langkah 6: Periksa Struktur CFB Tingkat Rendah

from aspose.email_foss.cfb import CFBReader

reader = CFBReader.from_file("message.msg")
print(f"Directory entries: {reader.directory_entry_count}")
for entry in reader.iter_streams():
    print(f"  Stream: {entry}")
reader.close()

Masalah Umum dan Solusi

CFBError saat memuat

File bukan kontainer CFB yang valid. Verifikasi bahwa itu adalah file Outlook MSG yang sebenarnya, bukan EML.

Body kosong tetapi body HTML memiliki konten

Beberapa pesan menyimpan konten hanya dalam HTML. Periksa msg.body_html ketika msg.body mengembalikan None.

Peringatan validasi

Akses msg.validation_issues untuk melihat tuple peringatan kepatuhan untuk file yang dimuat.


Pertanyaan yang Sering Diajukan (FAQ)

Bisakah saya membaca file EML?

Tidak langsung. Perpustakaan menangani format MSG (CFB). Konversi konten EML ke objek EmailMessage terlebih dahulu, lalu gunakan MapiMessage.from_email_message().

Apakah pemuatan membaca semua data lampiran ke memori?

Tidak. Metadata lampiran dibaca sesuai permintaan. Gunakan iter_attachments_info() untuk iterasi ringan.

Apakah ini thread-safe?

Setiap instance MapiMessage bersifat independen. Pembacaan bersamaan dari instance terpisah aman.

 Bahasa Indonesia