Indledning
Aspose.Email FOSS for Python is a free, MIT-licensed library for creating, reading, and konvertering af Outlook-kompatible meddelelsesfiler i ren Python. Tilgængelig på PyPI som aspose-email-foss, det fungerer på Windows, macOS, Linux, Docker og serverløse miljøer. uden Microsoft Office-afhængighed og ingen proprietær runtime.
Biblioteket dækker to hovedområder: et højt niveau MAPI-lag (MapiMessage) til arbejde med meddelelsesobjekter, organer, modtagere og vedhæftede filer samt et strukturelt system på lavt niveau. lag (MsgReader, CFBReader, CFBStorage, CFBStream) som udsætter råenhedens indhold af Fil Binære containere, der understøtter hver .msg - Filer.
Denne artikel gennemgår de vigtigste funktioner leveret i version 26.3, baseret på den bekræftede API-overflade.
Nøgleegenskaber
High-Level Message Creation med MapiMessage
MapiMessage er det primære indgangspunkt for at oprette Outlook-kompatible meddelelser fra Ring til mig. MapiMessage.create() med et emne og en krop, tilføje modtagere og Det er ikke muligt at få en sådan løsning. .msg - Filer.
from aspose.email_foss import msg
message = msg.MapiMessage.create(
"Quarterly status update",
"Hello team,\n\nPlease review the attached summary.\n\nRegards,\nEngineering",
)
message.set_property(msg.PropertyId.SENDER_NAME, "Build Agent")
message.set_property(msg.PropertyId.SENDER_EMAIL_ADDRESS, "agent@example.com")
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_attachment("report.txt", b"Summary content here.\n", mime_type="text/plain")
message.save("output.msg")
Læsning og inspektion af MSG-filer
MsgReader Det er et vigtigt element i den nye EU-politik. .msg fil uden at lade den fuldt ind til en MapiMessage.Det afslører top-level ejendomsoplysninger, modtagerlagre og Det er vigtigt, at der findes en effektiv og gennemsigtig kontrol af de forskellige typer data. Valideringsrørledninger.
from aspose.email_foss import msg
with msg.MsgReader.from_file("output.msg") as reader:
header = reader.top_level_header
print(f"Recipients : {header.recipient_count}")
print(f"Attachments: {header.attachment_count}")
for entry in reader.iter_recipient_storages():
_, props = reader.parse_subobject_property_stream(entry.stream_id)
print(f" Recipient storage {entry.name}: {len(props)} property entries")
MSG-tur: Lade, ændre og gemme
Fordi… MapiMessage Støtter from_file() til lastning og save() For at skrive, en fuld read-modify-write cyklus kræver kun et par linjer. navngivne egenskaber, indskrevet enums og Unicode strenge håndtering er tilgængelige via set_property, PropertyId, og MapiNamedProperty.
from aspose.email_foss import msg
with msg.MapiMessage.from_file("original.msg") as message:
message.set_property(msg.PropertyId.SUBJECT, "Updated Subject")
message.save("updated.msg")
EML / RFC 5322 Konvertering
MapiMessage.to_email_message() konverterer et indlæst MSG til en standard Python email.message.EmailMessage objekt, der muliggør eksport til RFC 5322 .eml format ved hjælp af Den omvendte retning (MapiMessage.from_email_message()) er konstrueret af: a) i henhold til artikel 7 MapiMessage fra en EmailMessage.
from pathlib import Path
from aspose.email_foss import msg
with msg.MapiMessage.from_file("message.msg") as message:
eml_bytes = message.to_email_bytes()
Path("message.eml").write_bytes(eml_bytes)
# Reverse: load EML into MapiMessage
import email
raw_eml = Path("message.eml").read_bytes()
email_obj = email.message_from_bytes(raw_eml)
mapi = msg.MapiMessage.from_email_message(email_obj)
mapi.save("from_eml.msg")
CFB-container gennemløb
Hver eneste dag. .msg filen er en CFB-container. CFBReader giver Læs-kun adgang til katalogtræet, så du kan liste lagringer og strømme, gå i den hierarki, og udtrække rå strøm bytes uden at stole på MsgReader.
from aspose.email_foss.cfb import CFBReader
with CFBReader.from_file("message.msg") as reader:
print(f"CFB version : {reader.major_version}")
print(f"Sector size : {reader.sector_size}")
for depth, entry in reader.iter_tree():
indent = " " * depth
size = entry.stream_size if entry.is_stream() else "-"
print(f"{indent}{entry.name} [size={size}]")
Beslaglæggelse af vedhæftede filer
Vedhæftede bilag tilføjes via: MapiMessage.add_attachment() (for binære data) eller MapiMessage.add_embedded_message_attachment() (for indlejrede MSG-meddelelser). acceptere filnavn, rå byte og en valgfri MIME-type.
from aspose.email_foss import msg
message = msg.MapiMessage.create("Attachment demo", "See files below.")
message.add_attachment("data.csv", b"id,value\n1,100\n", mime_type="text/csv")
inner = msg.MapiMessage.create("Nested message", "This is embedded.")
message.add_embedded_message_attachment(inner, "nested.msg")
message.save("with_attachments.msg")
Hurtig start
pip install aspose-email-foss>=26.3
from aspose.email_foss import msg
# Create and save a minimal MSG
message = msg.MapiMessage.create("Hello World", "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")
# Load it back and convert to EML
with msg.MapiMessage.from_file("hello.msg") as loaded:
print(loaded.get_property_value(msg.PropertyId.SUBJECT))
eml = loaded.to_email_bytes()
open("hello.eml", "wb").write(eml)
Støttede formater
| Format: | Udvidelse | Læs det. | Skriv ned |
|---|---|---|---|
| Binær sammensat fil | .cfb | ✓ | ✓ |
| Outlook-meddelelse | .msg | ✓ | ✓ |
| EML / RFC 5322 | .eml | ✓ | ✓ |
Open Source & Licensing
Aspose.Email FOSS for Python is released under the MIT License. The source repository is Tilgængelig på: Github.com/aspose-email-foss og den Pakken offentliggøres på PyPI som: aspose-email-foss.Kommerciel anvendelse, ændring og Omfordeling er tilladt under MIT-vilkårene.