Caratteristiche e Funzionalità
Caratteristiche e Funzionalità
Questa pagina copre ogni funzionalità principale di aspose-email-foss 26.3 con esempi funzionanti di Python.
Lettura di file MSG
Carica un file MSG e accedi alle sue proprietà principali:
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}")Creazione di file MSG
Crea un nuovo messaggio da zero:
from aspose.email_foss.msg import MapiMessage
msg = MapiMessage.create("Meeting Notes", "Please find the notes attached.")
msg.save("new_message.msg")Imposta oggetto e corpo su un messaggio esistente:
msg.subject = "Updated Subject"
msg.body = "Updated body text"
msg.save("updated.msg")Destinatari
Aggiungi destinatari con nomi visualizzati e tipi:
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")Allegati
Aggiungi allegati di file binari:
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")Incorpora un messaggio MSG come allegato annidato:
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")Proprietà MAPI
Leggi e scrivi le proprietà MAPI per ID proprietà:
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")Itera tutte le proprietà:
for prop in msg.iter_properties():
print(f"Tag: {prop.property_tag:#010x}")Conversione Email
Converti tra i formati MSG (MAPI) ed email (RFC 5322):
# 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")Operazioni CFB a basso livello
Leggi direttamente la struttura del contenitore CFB:
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()Scrivi documenti CFB:
from aspose.email_foss.msg import MsgWriter
data = msg.to_bytes()
with open("output.msg", "wb") as f:
f.write(data)Suggerimenti e migliori pratiche
- Chiama sempre
msg.close()oppure usa un gestore di contesto quando hai finito di leggere per rilasciare i handle dei file - Usa
msg.validation_issuesper verificare problemi di conformità del formato MSG - Il
strictparametro inMapiMessage.from_file()controlla la tolleranza agli errori — impostalo suFalseper un parsing permissivo - Tutti i dati degli allegati vengono caricati in memoria durante
from_file()— usaatt.dataper accedere direttamente ai byte;iter_attachments_info()è un iteratore di comodità sulla lista di allegati già popolata - Usa
to_email_string()per anteprime rapide del testo senza la costruzione completa dell’oggetto email
Problemi comuni
| Problema | Cause | Correzione |
|---|---|---|
CFBError durante il caricamento | File CFB/MSG non valido | Verifica che il file sia un vero Outlook MSG |
| Corpo vuoto dopo il caricamento | Corpo memorizzato solo in HTML | Verifica msg.body_html invece di msg.body |
| Destinatari mancanti | MSG non ha archivi di destinatari | I destinatari sono opzionali nel formato MSG; verifica iter_attachments_info() |
FAQ
Quali versioni del formato MSG sono supportate?
La libreria legge e scrive file MSG in formato CFB v3 e v4, compatibile con Microsoft Outlook.
Posso leggere file EML?
Non direttamente. La libreria gestisce il formato MSG. Usa MapiMessage.from_email_message() per convertire da RFC 5322 EmailMessage oggetti.
È supportata la thread-safety?
Ogni MapiMessage e CFBReader l’istanza è indipendente. L’accesso concorrente a istanze separate da thread separati è sicuro.
Riepilogo del Riferimento API
| Classe / Metodo | Descrizione |
|---|---|
MapiMessage | Rappresentazione ad alto livello del messaggio MSG |
MapiMessage.from_file() | Carica un file MSG |
MapiMessage.create() | Crea un nuovo messaggio MSG |
MapiMessage.save() | Salva in un file MSG |
MapiMessage.to_email_message() | Converti in EmailMessage (RFC 5322) |
MapiMessage.from_email_message() | Converti da EmailMessage a MSG |
MapiMessage.add_recipient() | Aggiungi un destinatario |
MapiMessage.add_attachment() | Aggiungi un allegato binario |
MapiAttachment | Allegato su un messaggio |
MapiRecipient | Destinatario su un messaggio |
MapiProperty | Voce della proprietà MAPI |
CFBReader | Lettore di contenitore CFB a basso livello |
CFBWriter | Scrittore di contenitore CFB a basso livello |
MsgReader | Lettore di struttura MSG a basso livello |