Uvod u članak
Aspose.Email FOSS for Python is a free, MIT-licensed library for creating, reading, and pretvara Outlook-kompatibilne datoteke poruka u čist Python. Dostupno na PyPI kao aspose-email-foss, radi na Windows, macOS, Linux, Docker i serverless okruženjima. bez ovisnosti o Microsoft Officeu i bez vlasničkog vremena rada.
Knjižnica obuhvaća dva glavna područja: visoki razini MAPI sloja (MapiMessage) za radne dane Smetni su elementi, tijela i primatelji poruka te prilozi; a strukturna struktura na niskom nivou je vrlo jednostavna. sloj (MsgReader, CFBReader, CFBStorage, CFBStream) koji izloži sirovo spoj. Datoteke binarne kontejnere koje podržavaju svaki .msg -Dopisi.
Ovaj članak vodi kroz ključne značajke isporučene u verziji 26.3, utemeljene na potvrđenom API površini.
Glavne karakteristike
Kreiranje poruka visoke razine pomoću MapiMessage-a
MapiMessage je primarna ulazna točka za kreiranje Outlook-kompatibilnih poruka s Zovi. MapiMessage.create() s predmetom i tijelu, dodati primatelje i U tom slučaju, ne može se koristiti. .msg -Dopisi.
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")
Čitanje i pregled MSG datoteka
MsgReader U tom smislu, Komisija je odlučila da se u skladu s člankom 73. stavku 1. .msg datoteka bez punog učitavanja u jedan MapiMessage.Izloži podatke o najvišim stanovima, skladištima primatelja i ostalim. U tom slučaju, u skladu s člankom 15. stavkom 1. točkom (a) Uredbe (EU) br. 1071/2013 trebalo bi se utvrditi da je na temelju tog članka i pod uvjetom da su sve informacije koje se nalaze u datoteku “družice” dostupne za upotrebu u svim predmetima koji nisu uključeni u tu dokumentaciju". U skladu s člankom 21. stavkom 2.
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-ov povratni put: učitavanje, izmjena i čuvanje
Zato što… MapiMessage podnošenje from_file() za utovar i save() za pisanje, punom read-modify-write ciklus zahtijeva samo nekoliko redova. Nazvane svojstva, upisane enume i Unicode string manipulacija su dostupni putem set_property, PropertyId, i 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")
U skladu s člankom 77. stavkom 1. točkom (a) Uredbe (EU) br. 575/2013.
MapiMessage.to_email_message() pretvara učita MSG u standardni Python email.message.EmailMessage Objekt, omogućava izvoz na RFC 5322 .eml format korištenjem standardna knjižnica.MapiMessage.from_email_message()) konstrukcije a) u skladu s člankom MapiMessage od 1. siječnja do 31. prosinca. 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")
U slučaju da je to moguće, provjerite sljedeće:
Svaki. .msg datoteka je kontejner za kompaktne binarne datotek (CFB). CFBReader sadržava: Pristup samo za čitanje na drvo direktorija, omogućava vam da popise skladišta i tokova, hodati po hijerarhija, i izvlačenje sirove struje bajtova bez oslanjanja na 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}]")
Upotreba priključaka
Priloga se dodaju putem: MapiMessage.add_attachment() (za binarne podatke) ili MapiMessage.add_embedded_message_attachment() (za ugrađene poruke MSG-a). prihvatiti ime datoteke, sirove bajtove i opcionalni MIME tip.
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")
Brzi početak
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)
Podržani formati
| Format: | Proračunska sredstva | Čitaj. | Pišite. |
|---|---|---|---|
| Komponirana datoteka binarna | .cfb | ✓ | ✓ |
| Outlook poruka | .msg | ✓ | ✓ |
| EML / RFC 5322 | .eml | ✓ | ✓ |
Otvoreni izvor i licenciranje
Aspose.Email FOSS for Python is released under the MIT License. The source repository is dostupno na: Github.com/aspose-email-foss i u skladu s člankom 1. paketa objavljena je na PyPI-u kao: aspose-email-foss.- komercijalna upotreba, modifikacija i Preraspodjela je dopušten pod MIT uvjetima.