Cara Memproses Fail MSG dalam Python
aspose-email-foss untuk Python menyediakan API pure-Python untuk membaca fail Outlook MSG tanpa kebergantungan Microsoft Office. Muatkan fail ke dalam objek MapiMessage untuk mengakses semua data mesej.
Panduan Langkah demi Langkah
Langkah 1: Pasang Pakej
pip install aspose-email-fossMemerlukan Python 3.10 atau lebih baru.
Langkah 2: Import Kelas MapiMessage
from aspose.email_foss.msg import MapiMessageLangkah 3: Muat Fail MSG
msg = MapiMessage.from_file("message.msg")Untuk penguraian longgar fail yang rosak, hantarkan strict=False:
msg = MapiMessage.from_file("message.msg", strict=False)Langkah 4: Akses Sifat Mesej
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: Senaraikan 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 Tahap 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()Isu Umum dan Penyelesaian
CFBError semasa memuatkan
Fail ini bukan kontena CFB yang sah. Sahkan ia adalah fail Outlook MSG yang sebenar, bukannya EML.
Badan kosong tetapi badan HTML mempunyai kandungan
Beberapa mesej menyimpan kandungan hanya dalam HTML. Semak msg.body_html apabila msg.body mengembalikan None.
Amaran pengesahan
Akses msg.validation_issues untuk melihat tuple amaran pematuhan bagi fail yang dimuatkan.
Soalan Lazim (FAQ)
Bolehkah saya membaca fail EML?
Tidak secara langsung. Perpustakaan mengendalikan format MSG (CFB). Tukar kandungan EML kepada objek EmailMessage terlebih dahulu, kemudian gunakan MapiMessage.from_email_message().
Adakah pemuatan membaca semua data lampiran ke dalam memori?
Tidak. Metadata lampiran dibaca mengikut permintaan. Gunakan iter_attachments_info() untuk iterasi ringan.
Adakah ia thread-safe?
Setiap contoh MapiMessage adalah bebas. Bacaan serentak daripada contoh yang berasingan adalah selamat.