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_issuesför att kontrollera MSG‑formatets efterlevnadsproblem - Den
strictparameter iMapiMessage.from_file()styr fel tolerans — sätt tillFalseför generös parsning - All attachment data laddas in i minnet under
from_file()— användatt.datafö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
| Problem | Orsak | Lösning |
|---|---|---|
CFBError vid inläsning | Inte en giltig CFB/MSG-fil | Verifiera att filen är ett faktiskt Outlook MSG |
| Tom kropp efter inläsning | Kropp lagrad enbart i HTML | Kontrollera msg.body_html istället för msg.body |
| Saknade mottagare | MSG har inga mottagarlagringar | Mottagare ä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 / Metod | Beskrivning |
|---|---|
MapiMessage | Hö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 |
MapiAttachment | Bilaga på ett meddelande |
MapiRecipient | Mottagare på ett meddelande |
MapiProperty | MAPI‑egenskapspost |
CFBReader | Lågnivå CFB-behållar läsare |
CFBWriter | Lågnivå CFB-behållar skrivare |
MsgReader | Lågnivå MSG-struktur läsare |