Pengantar

Membuat analisis email secara programatis adalah persyaratan umum untuk migrasi data, alur kerja arsip, dan alat kepatuhan. File Outlook MSG menggunakan format kontainer Compound File Binary (CFB) dengan sifat MAPI untuk mengkodekan metadata pesan, isi tubuh, penerima, serta lampiran. Bekerja dengan format ini di Python telah secara tradisional membutuhkan baik perpustakaan komersial atau manipulasi biner tingkat rendah.

Pengelolaan aspose-email-foss paket menyediakan pustaka murni Python, MIT-lisensi untuk membaca, membuat dan mengkonversi file Outlook MSG. Ini mengekspos sebuah tingkat tinggi yang tidak dapat diakses oleh Microsoft Office Access. MapiMessage API untuk tugas umum bersama dengan tingkat rendah MsgReader Perpustakaan ini membutuhkan Python 3.10 atau lebih baru dan tidak memiliki ketergantungan asli.

Apakah Anda perlu mengekstrak baris subjek dan tubuh dari batch pesan yang diarsipkan, mencantumkan lampiran untuk pengindeksan, atau mengkonversi file MSG ke format RFC 5322 standar, perpustakaan ini menangani analisis biner sehingga Anda dapat fokus pada logika aplikasi Anda.


Apa yang Termasuk?

Membaca File MSG dengan MapiMessage

Pengelolaan MapiMessage class adalah titik masuk utama untuk menganalisis file Outlook MSG. Buka file, akses properti-propertinya, dan tutup dengan bersih menggunakan context manager.

from aspose.email_foss import msg

with msg.MapiMessage.from_file("meeting-invite.msg") as message:
    print(f"Subject: {message.subject}")
    print(f"Body: {message.body[:200]}")
    print(f"HTML body available: {message.body_html is not None}")

Pengelolaan from_file method membaca kontainer CFB, menganalisis aliran properti MAPI, dan mengisi atribut yang diketik. subject, body, dan body_html property mengembalikan string yang telah didekod langsung.

Mengambil Penerima

Setiap file MSG menyimpan informasi penerima dalam penyimpanan MAPI khusus. MapiMessage.recipients properti mengembalikan daftar dari MapiRecipient objek dengan bidang yang diketik untuk nama tampilan, alamat email, dan tipe penerima (TO, CC, atau BCC).

from aspose.email_foss import msg

with msg.MapiMessage.from_file("team-update.msg") as message:
    for recipient in message.recipients:
        print(
            f"{recipient.display_name} <{recipient.email_address}> "
            f"type={recipient.recipient_type}"
        )

Bekerja dengan Lampiran

Pengelolaan iter_attachments_info hasil metode MapiAttachment objek yang memberikan nama file, byte mentah, tipe MIME, dan opsional Content-ID untuk gambar dalam baris.

from aspose.email_foss import msg

with msg.MapiMessage.from_file("report.msg") as message:
    for att in message.iter_attachments_info():
        print(f"  {att.filename} ({att.mime_type}, {len(att.data)} bytes)")
        if att.content_id:
            print(f"    inline content-id: {att.content_id}")

Mengakses Properti MAPI

Untuk skenario yang membutuhkan nilai properti MAPI khusus di luar atribut kenyamanan, gunakan get_property_value dengan a PropertyId Ini memberikan akses langsung ke properti apa pun yang disimpan dalam file MSG.

from aspose.email_foss import msg

with msg.MapiMessage.from_file("notification.msg") as message:
    sender = message.get_property_value(msg.PropertyId.SENDER_NAME)
    email = message.get_property_value(msg.PropertyId.SENDER_EMAIL_ADDRESS)
    delivery = message.get_property_value(msg.PropertyId.MESSAGE_DELIVERY_TIME)
    print(f"From: {sender} <{email}>")
    print(f"Delivered: {delivery}")

Mengulang semua sifat

Ketika Anda perlu memeriksa setiap properti dalam pesan (untuk debugging, audit, atau migrasi), iter_properties hasil metode MapiProperty objek dengan informasi tag dan nilai penuh.

from aspose.email_foss import msg

with msg.MapiMessage.from_file("sample.msg") as message:
    for prop in message.iter_properties():
        print(
            f"tag=0x{prop.property_tag:08X} "
            f"type=0x{prop.property_type:04X} "
            f"value={prop.value!r}"
        )

Konversi MSG menjadi EML

Pengelolaan to_email_message metode mengkonversi MSG yang diuraikan menjadi Python standar email.message.EmailMessage dari sana Anda dapat merilis pesan ke format RFC 5322 (EML) menggunakan perpustakaan standar.

from aspose.email_foss import msg

with msg.MapiMessage.from_file("archive.msg") as message:
    email_message = message.to_email_message()
    eml_bytes = email_message.as_bytes()
    with open("archive.eml", "wb") as f:
        f.write(eml_bytes)

Perhatikan bahwa output EML menggunakan built-in Python email modul untuk serialisasi. Perpustakaan menangani konversi MSG-to-MAPI-To-EmailMessage; perpustakaan standar menangani format kawat RFC 5322.


Memulai dengan cepat

Instal paket dari PyPI dan parse file MSG pertama Anda dalam 20 baris:

# Install: pip install aspose-email-foss>=26.3
from aspose.email_foss import msg

# Create a new message
message = msg.MapiMessage.create(
    "Project status update",
    "Hello team,\n\nPlease review the attached report.\n\nRegards",
)
message.add_recipient("alice@example.com", display_name="Alice")
message.add_attachment("notes.txt", b"meeting notes\n", mime_type="text/plain")
message.save("status-update.msg")

# Read it back and extract data
with msg.MapiMessage.from_file("status-update.msg") as loaded:
    print(f"Subject: {loaded.subject}")
    print(f"Recipients: {len(loaded.recipients)}")
    for att in loaded.iter_attachments_info():
        print(f"Attachment: {att.filename} ({len(att.data)} bytes)")

Format yang Didhukung

Format (Inggris)PerpanjanganBacalah.Menulis
Perspektif MSG.msgYa, aku tahu.Ya, aku tahu.
Komposisi File Binary.cfbYa, aku tahu.Ya, aku tahu.
EML (melalui konversi).emlYa (melalui: from_email_message)Ya (melalui: to_email_message)

Dukungan EML bekerja melalui konversi: MapiMessage.from_email_message() impor dari Python email.message.EmailMessage objek, dan to_email_message() Ekspor kembali. Parsing file EML langsung tidak disediakan perpustakaan standar menangani format kawat EM L.


Open Source & Lisensi

Aspose.Email FOSS for Python is released under the MIT license. You are free to use, modify, and distribute the library in both commercial and non-commercial projects. The full source code is available on GitHub.

Perpustakaan ini adalah implementasi Python murni tanpa ekstensi yang dikompilasi atau ketergantungan asli. Ini berjalan di platform mana pun yang mendukung Python 3.10 atau lebih baru.


Memulai

Menjelajahi lebih banyak sumber daya untuk bekerja dengan Aspose.Email FOSS for Python: