Giriş

E-posta mesajlarını programlı olarak ayrıştırmak, veri taşıma, arşivleme iş akışları ve uyumluluk araçları için yaygın bir gereksinimdir. Outlook MSG dosyaları, mesaj meta verilerini, gövde içeriğini, alıcıları ve ekleri kodlamak için MAPI özellikleriyle birlikte Compound File Binary (CFB) konteyner formatını kullanır. Python içinde bu formatla çalışmak, geleneksel olarak ya ticari kütüphaneler ya da düşük seviyeli ikili manipülasyon gerektirmiştir.

The aspose-email-foss paketi, Outlook MSG dosyalarını okuma, oluşturma ve dönüştürme için saf-Python, MIT lisanslı bir kütüphane sağlar. Yaygın görevler için yüksek seviyeli MapiMessage API sunarken, temel CFB yapısının ayrıntılı incelenmesi için düşük seviyeli MsgReader erişimi de sunar. Kütüphane, Python 3.10 veya üzerini gerektirir ve yerel bağımlılıkları yoktur.

Arşivlenmiş mesajların bir toplu halinde konu satırını ve gövdesini çıkarmanız, indeksleme için ekleri numaralandırmanız veya MSG dosyalarını standart RFC 5322 formatına dönüştürmeniz gerekse, bu kütüphane ikili ayrıştırmayı halleder, böylece uygulama mantığınıza odaklanabilirsiniz.


Neler Dahildir

MapiMessage ile MSG Dosyalarını Okuma

MapiMessage sınıfı, Outlook MSG dosyalarını ayrıştırmak için birincil giriş noktasıdır. Bir dosya açın, özelliklerine erişin ve bir bağlam yöneticisi ile temiz bir şekilde kapatın.

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}")

from_file yöntemi CFB konteynerini okur, MAPI özellik akışlarını ayrıştırır ve tiplenmiş öznitelikleri doldurur. subject, body ve body_html özellikleri çözümlenmiş dizeleri doğrudan döndürür.

Alıcıları Çıkarma

Her MSG dosyası alıcı bilgilerini ayrı MAPI depolarında saklar. MapiMessage.recipients özelliği, görüntüleme adı, e-posta adresi ve alıcı türü (TO, CC veya BCC) için tiplenmiş alanlara sahip MapiRecipient nesnelerinin bir listesini döndürür.

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}"
        )

Eklerle Çalışma

iter_attachments_info yöntemi, dosya adı, ham baytlar, MIME türü ve satır içi görüntüler için isteğe bağlı Content-ID sağlayan MapiAttachment nesneleri üretir.

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}")

MAPI Özelliklerine Erişim

Kolaylık özniteliklerinin ötesinde belirli MAPI özelliği değerleri gerektiren senaryolar için get_property_value yöntemini bir PropertyId sabitiyle kullanın. Bu, MSG dosyasında saklanan herhangi bir özelliğe doğrudan erişim sağlar.

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}")

Tüm Özellikleri Döngüyle Gezinme

Bir mesajdaki her özelliği (hata ayıklama, denetim veya taşıma amacıyla) incelemeniz gerektiğinde, iter_properties yöntemi tam etiket ve değer bilgisine sahip MapiProperty nesneleri üretir.

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}"
        )

MSG’yi EML’ye Dönüştürme

to_email_message yöntemi, ayrıştırılmış bir MSG’yi standart bir Python email.message.EmailMessage nesnesine dönüştürür. Buradan, standart kütüphaneyi kullanarak mesajı RFC5322 (EML) biçimine serileştirebilirsiniz.

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)

EML çıktısının serileştirme için Python’nin yerleşik email modülünü kullandığını unutmayın. Kütüphane, MSG’den MAPI’ye ve EmailMessage’ye dönüşümü yönetir; standart kütüphane ise RFC5322 kablo formatını işler.


Hızlı Başlangıç

PyPI’den paketi kurun ve 20 satırın altında ilk MSG dosyanızı ayrıştırın:

# 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)")

Desteklenen Biçimler

BiçimUzantıOkuYaz
Outlook MSG.msgEvetEvet
Compound File Binary.cfbEvetEvet
EML (dönüşüm yoluyla).emlEvet (from_email_message aracılığıyla)Evet (to_email_message aracılığıyla)

EML desteği dönüşüm yoluyla çalışır: MapiMessage.from_email_message(), bir Python email.message.EmailMessage nesnesinden içe aktarır ve to_email_message() geri dışa aktarır. Doğrudan EML dosyası ayrıştırması sağlanmaz — standart kütüphane EML kablo formatını işler.


Açık Kaynak & Lisanslama

Aspose.Email FOSS for Python MIT lisansı altında yayımlanmıştır. Kütüphaneyi ticari ve ticari olmayan projelerde özgürce kullanabilir, değiştirebilir ve dağıtabilirsiniz. Tam kaynak kodu GitHub adresinde mevcuttur.

Kütüphane, derlenmiş uzantılar veya yerel bağımlılıklar olmadan saf-Python bir uygulamadır. Python 3.10 ve üzerini destekleyen herhangi bir platformda çalışır.


Başlarken

Aspose.Email FOSS ile çalışmak için Python konusunda daha fazla kaynağı keşfedin:

  • Developer Guide — tam dokümantasyon, öğreticiler ve API yürütme kılavuzları
  • Bilgi Tabanı — nasıl yapılır makaleleri ve sıkça sorulan sorular
  • API Reference — tam sınıf ve yöntem referansı

İlgili Kaynaklar