Funktioner och funktionalitet

Funktioner och funktionalitet

Funktioner och funktionalitet

Den här sidan täcker varje huvudfunktion av aspose-email-foss 26.3 med fungerande Python-exempel.


Läsa MSG-filer

Läs in en MSG-fil och få åtkomst till dess grundläggande egenskaper:

from aspose.email_foss.msg import MapiMessage

msg = MapiMessage.from_file("message.msg")

print(f"Subject: {msg.subject}")
print(f"Body: {msg.body}")
print(f"HTML Body: {msg.body_html}")
print(f"Message Class: {msg.message_class}")

Skapa MSG-filer

Skapa ett nytt meddelande från början:

from aspose.email_foss.msg import MapiMessage

msg = MapiMessage.create("Meeting Notes", "Please find the notes attached.")
msg.save("new_message.msg")

Ange ämne och brödtext i ett befintligt meddelande:

msg.subject = "Updated Subject"
msg.body = "Updated body text"
msg.save("updated.msg")

Mottagare

Lägg till mottagare med visningsnamn och typer:

from aspose.email_foss.msg import MapiMessage, RECIPIENT_TYPE_CC

msg = MapiMessage.create("Hello", "Message body")
msg.add_recipient("alice@example.com", display_name="Alice Smith")
msg.add_recipient("bob@example.com", display_name="Bob Jones", recipient_type=RECIPIENT_TYPE_CC)
msg.save("with_recipients.msg")

Bilagor

Lägg till binära filbilagor:

with open("report.pdf", "rb") as f:
    data = f.read()

msg.add_attachment("report.pdf", data, mime_type="application/pdf")
msg.save("with_attachment.msg")

Bädda in ett MSG-meddelande som en inbäddad bilaga:

inner = MapiMessage.create("Inner Subject", "Inner body")
msg.add_embedded_message_attachment(inner, filename="embedded.msg", mime_type="application/vnd.ms-outlook")
msg.save("with_embedded.msg")

MAPI-egenskaper

Läs och skriv MAPI-egenskaper efter egenskaps-ID:

from aspose.email_foss.msg import PropertyId

# Read a property
subject = msg.get_property(PropertyId.SUBJECT)

# Set a property
msg.set_property(PropertyId.SUBJECT, "New Subject")

Iterera alla egenskaper:

for prop in msg.iter_properties():
    print(f"Tag: {prop.property_tag:#010x}")

E-postkonvertering

Konvertera mellan MSG (MAPI) och e-post (RFC 5322)-format:

# MSG to email string
email_str = msg.to_email_string()
print(email_str[:500])

# MSG to EmailMessage object
email_msg = msg.to_email_message()

# EmailMessage back to MapiMessage
msg2 = MapiMessage.from_email_message(email_msg)
msg2.save("roundtrip.msg")

Lågnivå CFB-operationer

Läs CFB-behållarstruktur direkt:

from aspose.email_foss.cfb import CFBReader

reader = CFBReader.from_file("message.msg")
print(f"File size: {reader.file_size} bytes")
print(f"Sectors: {reader.fat_sector_count}")
print(f"Entries: {reader.directory_entry_count}")

for entry in reader.iter_storages():
    print(f"Storage: {entry}")

for entry in reader.iter_streams():
    print(f"Stream: {entry}")

reader.close()

Skriv CFB-dokument:

from aspose.email_foss.msg import MsgWriter

data = msg.to_bytes()
with open("output.msg", "wb") as f:
    f.write(data)

Tips och bästa praxis

  • Anropa alltid msg.close() eller använd en kontext‑hanterare när du är klar med läsning för att frigöra filhandtag
  • Använd msg.validation_issues för att kontrollera MSG‑formatets efterlevnadsproblem
  • Den strict parameter i MapiMessage.from_file() styr fel tolerans — sätt till False för generös parsning
  • All attachment data laddas in i minnet under from_file() — använd att.data för att komma åt byte direkt; iter_attachments_info() är en bekvämlighets‑iterator över den redan fyllda bilagor‑listan
  • Använd to_email_string() för snabba textförhandsgranskningar utan fullständig e‑postobjektkonstruktion

Vanliga problem

ProblemOrsakLösning
CFBError vid inläsningInte en giltig CFB/MSG-filVerifiera att filen är ett faktiskt Outlook MSG
Tom kropp efter inläsningKropp lagrad enbart i HTMLKontrollera msg.body_html istället för msg.body
Saknade mottagareMSG har inga mottagarlagringarMottagare är valfria i MSG-formatet; kontrollera iter_attachments_info()

FAQ

Vilka MSG-formatversioner stöds?

Biblioteket läser och skriver MSG-filer i CFB v3- och v4-format, kompatibelt med Microsoft Outlook.

Kan jag läsa EML-filer?

Inte direkt. Biblioteket hanterar MSG-formatet. Använd MapiMessage.from_email_message() för att konvertera från RFC 5322 EmailMessage objekt.

Stöds trådsäkerhet?

Varje MapiMessage och CFBReader instans är oberoende. Samtidig åtkomst till separata instanser från separata trådar är säker.


API-referenssammanfattning

Klass / MetodBeskrivning
MapiMessageHög nivå MSG-meddelanderepresentation
MapiMessage.from_file()Läs in en MSG-fil
MapiMessage.create()Skapa ett nytt MSG-meddelande
MapiMessage.save()Spara till MSG-fil
MapiMessage.to_email_message()Konvertera till EmailMessage (RFC 5322)
MapiMessage.from_email_message()Konvertera från EmailMessage till MSG
MapiMessage.add_recipient()Lägg till en mottagare
MapiMessage.add_attachment()Lägg till en binär bilaga
MapiAttachmentBilaga på ett meddelande
MapiRecipientMottagare på ett meddelande
MapiPropertyMAPI‑egenskapspost
CFBReaderLågnivå CFB-behållar läsare
CFBWriterLågnivå CFB-behållar skrivare
MsgReaderLågnivå MSG-struktur läsare
 Svenska