Bevezetés

Az e-mail üzenetek programmatizált elemzése az adatvándorlás, archiválási munkafolyamatok és megfelelőségi eszközök közös követelménye.Az Outlook MSG fájlok a MAPI tulajdonságaival rendelkező Compound File Binary (CFB) konténerformátumot használják az üzenet metadatainak, testtartalmának, címzettjének és mellékleteinek kódolására.A Pythonban ezekkel a formátumokkal való munkálkodás hagyományosan kereskedelmi könyvtárakat vagy alacsony szintű bináris manipulációt igényelt.

A Bizottság aspose-email-foss A csomag egy tiszta Python, MIT-licencelt könyvtárat biztosít az Outlook MSG fájlok olvasására, létrehozására és konvertálására. Felfedezi a magas szintű MapiMessage Az API az alsó szintű feladatok mellett közös feladatokra is. MsgReader A könyvtár Python 3.10 vagy újabb verziót igényel, és nem rendelkezik természetes függőségekkel.

Akár ki kell vonszolnia a témarendet és testét egy csomó archivált üzenetről, vagy listáznia kell mellékleteit az indexeléshez, illetve konvertálni MSG fájlokat szabványos RFC 5322 formátumba. Ez a könyvtár kezeli a bináris elemzést, így összpontosíthat az alkalmazás logikájára.


Mit tartalmaz?

MSG fájlok olvasása MapiMessage-val

A Bizottság MapiMessage A klasszis egy Outlook MSG fájlok elemzésének elsődleges belépőpontja. Nyissa meg a fájlokat, keresse fel tulajdonságaikat és zárja be tisztán kontextuskezeléssel.

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

A Bizottság from_file A MAPI-szolgáltatás a CFB tartályt olvassa, elemzi a MAPI tulajdonságok folyamatait és betölti az adott attribútumokat. subject, body,és a következők: body_html a tulajdonságok közvetlenül visszaadják az dekódolt szalagokat.

A kedvezményezettek kiválasztása

Minden MSG fájl a címzett adatait tárolja dedikált MAPI-tárolóban. MapiMessage.recipients A tulajdonság listát ad vissza: MapiRecipient objektumok, amelyekben a megjelenítési név, e-mail cím és fogadó típus (TO, CC vagy BCC) betűzött mezőket tartalmaz.

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

A mellékletek használata

A Bizottság iter_attachments_info módszer hozamok MapiAttachment az inline képek fájlnevével, nyers bájtokkal, MIME-típusával és opcionális Content-ID-jével ellátott objektumok.

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 tulajdonságok elérése

Az olyan forgatókönyvek esetében, amelyek a kényelmes attribútumokon túl speciális MAPI tulajdonságértékeket igényelnek, az alábbiakat kell használni: get_property_value a PropertyId Ez közvetlen hozzáférést biztosít az MSG fájlon tárolt bármely tulajdonsághoz.

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

Minden tulajdonság ismétlésének alkalmazása

Amikor minden tulajdonságot meg kell vizsgálnia egy üzenetben (a hibacsökkentéshez, az audithoz vagy a migrációhoz), a iter_properties módszer hozamok MapiProperty teljes címkével és értékmel rendelkező objektumok.

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-t EML-re alakításának módja

A to_email_message a módszer egy elemzett MSG-t szabványos Python-ba alakítja át email.message.EmailMessage Onnan a standard könyvtárat használva sorozatosíthatja az üzenetet az RFC 5322 (EML) formátumba.

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)

Figyeljük meg, hogy az EML kimenetel Python beépített email A könyvtár kezeli az MSG-to-MAPI-to-EmailMessage konverziót; a szabványos könyvtár kezelje az RFC 5322 drótformátumot.


Gyors kezdés

A PyPI-ből telepítse a csomagot, és az első MSG fájlt 20 sor alatt elemezze:

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

Támogatott formátumok

FormátumMeghosszabbításOlvasom.Írjon
Outlook MSG.msg- Igen. - Igen.Igen, igen. - Az is jó.
Bináris összetett fájl.cfbIgen, igen. - Az is jó.Igen, igen. - Az is jó.
EML (átváltás útján).emlIgen (a következő formán: from_email_message)Igen (a következő formán: to_email_message)

Az EML-támogatás átalakítással működik: MapiMessage.from_email_message() Python-ból származó behozatal email.message.EmailMessage tárgy, és to_email_message() A standard könyvtár az EML-hálózat formátumát kezeli.


Nyitott forráskódú és licenckészítés

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.

A könyvtár egy tiszta Python-implementáció, amely nem tartalmaz kiterjesztéseket vagy helyi függőségeket. Bármely olyan platformon fut, ami támogatja a Python 3.10-at vagy újabb verziót.


Kezdjük!

Fedezze fel a további forrásokat az Aspose-al való munka érdekében. E-mail FOSS Python: