Pendahuluan

Aspose.Email FOSS for Python kini tersedia di PyPI: perpustakaan gratis berlisensi MIT untuk membuat, membaca, dan mengonversi file Outlook .msg sepenuhnya dalam Python, tanpa ketergantungan pada Microsoft Office atau ekstensi native apa pun. Instal dengan pip install aspose-email-foss>=26.3 dan mulai bekerja dengan kontainer MSG dan CFB segera.

Perpustakaan ini menargetkan Python 3.10 dan yang lebih baru. Ia mengimplementasikan format Compound File Binary (CFB) dan format pesan MSG dari awal, memberi Anda kontrol deterministik atas cara pesan email diserialkan dan dibaca. Karena implementasinya murni Python, ia berjalan identik di Windows, macOS, Linux, dan di lingkungan yang dikontainerkan.

Aspose.Email FOSS dirancang untuk pengembang yang membangun pipeline pemrosesan email, alat arsip kepatuhan, alur kerja analisis forensik, atau aplikasi apa pun yang perlu membuat atau memeriksa file pesan yang kompatibel dengan Outlook tanpa instalasi Exchange atau Outlook yang berjalan.


Fitur Utama

Buat File MSG

Bangun file .msg yang kompatibel dengan Outlook dari awal menggunakan MapiMessage.create(). Atur properti MAPI standar seperti subjek, pengirim, waktu pengiriman, dan bidang tampilan melalui enum PropertyId. Tambahkan penerima dengan add_recipient() dan lampiran file dengan add_attachment(), kemudian simpan hasilnya ke disk.

from aspose.email_foss import msg

message = msg.MapiMessage.create(
    "Quarterly status update and rollout plan",
    "Hello team,\n\nPlease find the latest rollout summary attached.\n\nRegards,\nEngineering",
)

message.set_property(msg.PropertyId.SENDER_NAME, "Build Agent")
message.set_property(msg.PropertyId.SENDER_EMAIL_ADDRESS, "build.agent@example.com")
message.set_property(msg.PropertyId.INTERNET_MESSAGE_ID, "<example-001@example.com>")

message.add_recipient("alice@example.com", display_name="Alice Example")
message.add_recipient("bob@example.com", display_name="Bob Example")
message.add_recipient(
    "carol@example.com",
    display_name="Carol Example",
    recipient_type=msg.RECIPIENT_TYPE_CC,
)

message.add_attachment("hello.txt", b"sample attachment\n", mime_type="text/plain")
message.save("example-message.msg")

Baca dan Konversi MSG ke EML

Muat file .msg yang ada dengan MapiMessage.from_file() dan konversi menjadi objek EmailMessage Python standar melalui to_email_message(). Dari sana, serialisasikan ke byte EML untuk penyimpanan atau penerusan melalui SMTP.

from aspose.email_foss import msg

with msg.MapiMessage.from_file("example-message.msg") as loaded:
    email_message = loaded.to_email_message()
    eml_bytes = email_message.as_bytes()

with open("example-message.eml", "wb") as f:
    f.write(eml_bytes)

Memeriksa Internals MSG

Gunakan MsgReader dan CFBReader yang mendasarinya untuk memeriksa struktur biner dari file MSG. Akses metadata CFB (versi, ukuran sektor, jumlah entri direktori) dan iterasi entri properti MAPI pada tingkat biner.

from aspose.email_foss import msg

reader = msg.MsgReader.from_file("example-message.msg")
cfb = reader.cfb_reader

print(f"CFB major_version={cfb.major_version}")
print(f"sector_size={cfb.sector_size}")
print(f"directory_entries={cfb.directory_entry_count}")

for entry in reader.iter_top_level_fixed_length_properties():
    tag = entry.property_tag
    print(f"tag=0x{tag:08X} flags=0x{entry.flags:08X} value={entry.value.hex()}")

reader.close()

Akses CFB Tingkat Rendah

Baca dan telusuri kontainer Compound File Binary apa pun menggunakan CFBReader. Enumerasi storage dan stream, selesaikan jalur berdasarkan nama, dan ekstrak data stream mentah untuk pemrosesan khusus.

from aspose.email_foss.cfb import CFBReader

reader = CFBReader.from_file("example-message.msg")

for entry in reader.iter_storages():
    print(f"Storage: {entry.name}")

for entry in reader.iter_streams():
    data = reader.get_stream_data(entry.stream_id)
    print(f"Stream: {entry.name} size={len(data)}")

reader.close()

Panduan Cepat

Instal perpustakaan dan buat file MSG pertama Anda dalam kurang dari sepuluh baris:

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

message = msg.MapiMessage.create("Hello from Python", "This is a test message.")
message.set_property(msg.PropertyId.SENDER_EMAIL_ADDRESS, "sender@example.com")
message.add_recipient("recipient@example.com", display_name="Recipient")
message.save("hello.msg")

with msg.MapiMessage.from_file("hello.msg") as loaded:
    eml = loaded.to_email_message()
    print(eml["Subject"])

Format yang Didukung

FormatImporEkspor
MSGYaYa
CFBYaYa

Sumber Terbuka & Lisensi

Aspose.Email FOSS untuk Python dirilis di bawah MIT License. Anda dapat menggunakannya dalam proyek pribadi, internal, dan komersial tanpa batasan. Kode sumber tersedia di GitHub.


Memulai