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
| Format | Impor | Ekspor |
|---|---|---|
| MSG | Ya | Ya |
| CFB | Ya | Ya |
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.