Bevezetés
Aspose.Email FOSS for Python túlmutat az alapvető üzenet létrehozáson. A könyvtár teljes mélységben bemutatja a MAPI tulajdonságmodellt, lehetővé téve az egyedi tulajdonságok ID és típus alapján történő olvasását, írását és lekérdezését. Kezeli a címzetteket, mellékleteket és beágyazott üzeneteket elsőrendű objektumokként, és kétirányú konverziót biztosít a MSG bináris formátum és a Python szabványos email.message.EmailMessage között.
A konténer szinten a CFB olvasó és író determinisztikus irányítást biztosít a Compound File Binary dokumentumok felett. Bejárhatja a tárolási hierarchiákat, kivonhatja a nyers adatfolyam adatokat, új konténereket építhet a semmiből, és sorosíthatja őket vissza bájtokba. Mind a CFBError, mind a MsgError strukturált kivételkezelést biztosít a hibás bemenethez.
Ez a bejegyzés részletesen bemutatja az egyes képességeket, ellenőrzött kódpéldákkal, amelyeket közvetlenül a könyvtár saját tesztkészletéből és példascripteiből vettünk.
Mit tartalmaz
MAPI tulajdonságok elérése
Minden MSG fájl a MAPI tulajdonságokra épül. MapiMessage lehetővé teszi set_property() és get_property() használatát a tulajdonságokhoz a PropertyId enum értékük alapján. Használja a iter_properties()‑t az üzenet összes tulajdonságának felsorolásához, vagy a get_property_value()‑t a közvetlen értéklekéréshez opcionális típusdekódolással.
from aspose.email_foss import msg
message = msg.MapiMessage.create("Status report", "Weekly update attached.")
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.DISPLAY_TO, "Alice Example; Bob Example")
message.set_property(msg.PropertyId.DISPLAY_CC, "Carol Example")
message.set_property(msg.PropertyId.DISPLAY_BCC, "Ops Archive")
message.set_property(
msg.PropertyId.TRANSPORT_MESSAGE_HEADERS,
"X-Environment: production\nX-Workflow: weekly-report\n",
)
message.save("report.msg")
A tulajdonságok visszaolvasásához egy meglévő fájlból:
from aspose.email_foss import msg
with msg.MapiMessage.from_file("report.msg") as loaded:
print(f"Subject: {loaded.subject}")
print(f"Body: {loaded.body}")
for prop in loaded.iter_properties():
print(f"tag=0x{prop.property_tag:08X}")
Címzettek és mellékletek
Adjon hozzá címzetteket a add_recipient() segítségével, megadva a megjelenített nevet és a címzett típusát (To, CC vagy BCC). Csatoljon fájlokat a add_attachment() használatával, nyers bájtok és MIME-típus megadásával. Beágyazott üzenetek esetén a add_embedded_message_attachment() egy teljes MapiMessage‑t ágyaz be gyermekobjektumként a szülőbe.
from aspose.email_foss import msg
message = msg.MapiMessage.create("Team update", "See attached notes.")
message.add_recipient("alice@example.com", display_name="Alice Example")
message.add_recipient(
"carol@example.com",
display_name="Carol Example",
recipient_type=msg.RECIPIENT_TYPE_CC,
)
message.add_recipient(
"archive@example.com",
display_name="Ops Archive",
recipient_type=msg.RECIPIENT_TYPE_BCC,
)
message.add_attachment("notes.txt", b"Meeting notes content\n", mime_type="text/plain")
message.add_attachment("data.bin", b"\x00\x01\x02\x03", mime_type="application/octet-stream")
message.save("team-update.msg")
A meglévő üzenet mellékleteinek megtekintéséhez:
from aspose.email_foss import msg
with msg.MapiMessage.from_file("team-update.msg") as loaded:
for att in loaded.iter_attachments_info():
print(f"name={att.filename} mime={att.mime_type} size={len(att.data)}")
print(f" embedded={att.is_embedded_message} storage={att.storage_name}")
MSG to EmailMessage átalakítása
A könyvtár két irányban konvertál az MSG és a Python email.message.EmailMessage között. Használja a to_email_message()-t, hogy szabványos MIME objektumot hozzon létre, vagy a from_email_message()-t, hogy egy meglévő EmailMessage-t importálja az MSG formátumba. A kényelmi módszerek to_email_bytes() és to_email_string() közvetlenül bájtokba vagy szövegbe sorosítanak.
from aspose.email_foss import msg
with msg.MapiMessage.from_file("example.msg") as loaded:
email_msg = loaded.to_email_message()
print(f"content_type: {email_msg.get_content_type()}")
print(f"is_multipart: {email_msg.is_multipart()}")
print(f"headers: {len(email_msg)}")
for key, value in email_msg.items():
print(f" {key}: {value}")
body_part = email_msg.get_body(preferencelist=("plain", "html"))
if body_part is not None:
print(f"body: {body_part.get_content()[:200]}")
CFB Container körkörös átvitel
Építsen és sorosítson Compound File Binary tárolókat az MSG rétegtől függetlenül. CFBDocument.from_file() betölt egy meglévő tárolót egy módosítható dokumentummodellbe CFBStorage és CFBStream csomópontokkal. CFBWriter.write_file() sorosítja a dokumentumot vissza a lemezre deterministán.
from aspose.email_foss.cfb import CFBDocument, CFBReader, CFBWriter
reader = CFBReader.from_file("container.cfb")
document = CFBDocument.from_reader(reader)
reader.close()
output = CFBWriter.to_bytes(document)
print(f"Serialized {len(output)} bytes")
Hiba kezelés
A könyvtár CFBError hibát dob a hibás CFB tartalom esetén, és MsgError hibát a hibás MSG struktúra esetén. MapiMessage továbbá egy validation_issues tulajdonságot tesz elérhetővé, amely figyelmeztető karakterláncok egy tuple-jét adja vissza kivétel dobása nélkül, lehetővé téve, hogy Ön döntsön, mennyire szigorúan kezelje a nem megfelelő fájlokat.
from aspose.email_foss.cfb import CFBReader, CFBError
from aspose.email_foss.msg import MsgReader, MsgError
try:
reader = CFBReader.from_file("corrupted.cfb")
except CFBError as e:
print(f"CFB parse error: {e}")
try:
reader = MsgReader.from_file("malformed.msg")
except MsgError as e:
print(f"MSG parse error: {e}")
Gyors kezdés
pip install aspose-email-foss>=26.3
Töltsön be egy meglévő MSG-t, olvassa el a metaadatait, és listázza a mellékleteket:
from aspose.email_foss import msg
with msg.MapiMessage.from_file("inbox-message.msg") as message:
print(f"Subject: {message.subject}")
print(f"Body preview: {message.body[:200] if message.body else '(empty)'}")
for att in message.iter_attachments_info():
print(f"Attachment: {att.filename} ({att.mime_type}, {len(att.data)} bytes)")
issues = message.validation_issues
if issues:
print(f"Warnings: {issues}")
Támogatott formátumok
| Formátum | Import | Export |
|---|---|---|
| MSG | Igen | Igen |
| CFB | Igen | Igen |
Nyílt forráskód és licencelés
Aspose.Email FOSS for Python a MIT License alatt kerül kiadásra. Személyes, belső és kereskedelmi projektekben korlátozás nélkül használhatja. A forráskód elérhető a GitHub oldalon.