Ievads

Aspose.Email FOSS for Python pārsniedz pamata ziņojumu izveidi. Bibliotēka atklāj pilnu MAPI īpašību modeļa dziļumu, ļaujot lasīt, rakstīt un vaicāt atsevišķas īpašības pēc ID un tipa. Tā apstrādā saņēmējus, pielikumu un iegultus ziņojumus kā pirmklas objektus, un nodrošina divvirzienu konvertēšanu starp MSG bināro formātu un Python standarta email.message.EmailMessage.

Kontenera līmenī CFB lasītājs un rakstītājs nodrošina deterministisku kontroli pār Compound File Binary dokumentiem. Jūs varat pārlūkot krātuves hierarhijas, izvilkt neapstrādātus plūsmas datus, izveidot jaunus konteinerus no nulles un serializēt tos atpakaļ uz baitiem. Gan CFBError, gan MsgError nodrošina strukturētu izņēmumu apstrādi nepareiziem ievades datiem.

Šis ieraksts iziet cauri katrai funkcijai, izmantojot pārbaudītus koda piemērus, kas tieši ņemti no bibliotēkas testu komplekta un piemēru skriptiem.


Kas iekļauts

MAPI īpašību piekļuve

Katrs MSG fails ir balstīts uz MAPI īpašībām. MapiMessage atklāj set_property() un get_property(), lai strādātu ar īpašībām pēc to PropertyId enum vērtības. Izmantojiet iter_properties(), lai uzskaitītu visas īpašības ziņojumā, vai get_property_value() tiešai vērtības izgūšanai ar izvēles tipa atkodēšanu.

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

Lai no esoša faila nolasītu īpašības:

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

Saņēmēji un Pielikumi

Pievienojiet saņēmējus ar add_recipient(), norādot attēlošanas nosaukumu un saņēmēja veidu (To, CC vai BCC). Pievienojiet failus ar add_attachment(), izmantojot neapstrādātus baitus un MIME tipu. Iegultiem ziņojumos, add_embedded_message_attachment() iekļauj pilnīgu MapiMessage kā bērna objektu vecākā objektā.

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

Lai pārbaudītu pievienojumus esošā ziņojumā:

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 uz EmailMessage konvertēšana

Bibliotēka konvertē abos virzienos starp MSG un Python email.message.EmailMessage. Izmantojiet to_email_message(), lai izveidotu standartam atbilstošu MIME objektu, vai from_email_message(), lai importētu esošu EmailMessage MSG formātā. Ērtuma metodes to_email_bytes() un to_email_string() serializē tieši uz baitiem vai tekstu.

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 apgrieztā pārvietošanas

Veidojiet un serializējiet Compound File Binary konteinerus neatkarīgi no MSG slāņa. CFBDocument.from_file() ielādē esošu konteineru maināmā dokumenta modelī ar CFBStorage un CFBStream mezgliem. CFBWriter.write_file() serializē dokumentu atpakaļ uz diska deterministiski.

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

Kļūdu apstrāde

Bibliotēka izsauc CFBError nepareizi formatētam CFB saturam un MsgError nederīgai MSG struktūrai. MapiMessage arī atklāj validation_issues īpašību, kas atgriež brīdinājumu virkņu tupeli, neizraisot izņēmumu, ļaujot jums izlemt, cik stingri apstrādāt neatbilstīgus failus.

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

Ātrais sākums

pip install aspose-email-foss>=26.3

Ielādēt esošu MSG, nolasīt tā metadatus un uzskaitīt pielikumu:

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

Atbalstītie formāti

FormātsImportēšanaEksportēšana
MSG
CFB

Atvērtā pirmkods un licencēšana

Aspose.Email FOSS for Python ir izlaists zem MIT License. Jūs varat to izmantot personīgajos, iekšējos un komerciālos projektos bez ierobežojumiem. Avota kods ir pieejams vietnē GitHub.


Sākšana