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-fossMembutuhkan Python 3.10 atau yang lebih baru.
Langkah 2: Impor Kelas MapiMessage
from aspose.email_foss.msg import MapiMessageLangkah 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.