Caratteristiche e Funzionalità

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_issues per verificare problemi di conformità del formato MSG
  • Il strict parametro in MapiMessage.from_file() controlla la tolleranza agli errori — impostalo su False per un parsing permissivo
  • Tutti i dati degli allegati vengono caricati in memoria durante from_file() — usa att.data per 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

ProblemaCauseCorrezione
CFBError durante il caricamentoFile CFB/MSG non validoVerifica che il file sia un vero Outlook MSG
Corpo vuoto dopo il caricamentoCorpo memorizzato solo in HTMLVerifica msg.body_html invece di msg.body
Destinatari mancantiMSG non ha archivi di destinatariI 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 / MetodoDescrizione
MapiMessageRappresentazione 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
MapiAttachmentAllegato su un messaggio
MapiRecipientDestinatario su un messaggio
MapiPropertyVoce della proprietà MAPI
CFBReaderLettore di contenitore CFB a basso livello
CFBWriterScrittore di contenitore CFB a basso livello
MsgReaderLettore di struttura MSG a basso livello
 Italiano