Cara Memproses Fail MSG dalam Python

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-foss

Memerlukan Python 3.10 atau lebih baru.


Langkah 2: Import Kelas MapiMessage

from aspose.email_foss.msg import MapiMessage

Langkah 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.

 Bahasa Melayu