Fonctionnalités et caractéristiques

Fonctionnalités et caractéristiques

Fonctionnalités et caractéristiques

Cette page couvre chaque fonctionnalité majeure de aspose-email-foss 26.3 avec des exemples Python fonctionnels.


Lecture des fichiers MSG

Chargez un fichier MSG et accédez à ses propriétés principales :

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

Création de fichiers MSG

Créez un nouveau message à partir de zéro :

from aspose.email_foss.msg import MapiMessage

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

Définissez l’objet et le corps d’un message existant :

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

Destinataires

Ajoutez des destinataires avec des noms d’affichage et des types :

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

Pièces jointes

Ajoutez des pièces jointes de fichiers binaires :

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

Intégrez un message MSG en tant que pièce jointe imbriquée :

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

Propriétés MAPI

Lisez et écrivez les propriétés MAPI par ID de propriété :

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

Itérez toutes les propriétés :

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

Conversion d’e-mails

Convertir entre les formats MSG (MAPI) et e-mail (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")

Opérations CFB de bas niveau

Lire directement la structure du conteneur 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()

Écrire des documents CFB :

from aspose.email_foss.msg import MsgWriter

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

Conseils et bonnes pratiques

  • Appelez toujours msg.close() ou utilisez un gestionnaire de contexte une fois la lecture terminée pour libérer les descripteurs de fichiers
  • Utilisez msg.validation_issues pour vérifier les problèmes de conformité du format MSG
  • Le strict paramètre dans MapiMessage.from_file() contrôle la tolérance aux erreurs — définissez-le à False pour une analyse permissive
  • Toutes les données des pièces jointes sont chargées en mémoire pendant from_file() — utilisez att.data pour accéder directement aux octets ; iter_attachments_info() est un itérateur pratique sur la liste des pièces jointes déjà remplie
  • Utilisez to_email_string() pour des aperçus rapides de texte sans construction complète de l’objet e‑mail

Problèmes courants

ProblèmeCauseCorrection
CFBError lors du chargementFichier CFB/MSG non valideVérifiez que le fichier est un véritable Outlook MSG
Corps vide après le chargementCorps stocké uniquement en HTMLVérifier msg.body_html au lieu de msg.body
Destinataires manquantsLe MSG n’a pas de stockage de destinatairesLes destinataires sont facultatifs dans le format MSG ; vérifiez iter_attachments_info()

FAQ

Quelles versions du format MSG sont prises en charge ?

La bibliothèque lit et écrit les fichiers MSG au format CFB v3 et v4, compatible avec Microsoft Outlook.

Puis-je lire les fichiers EML ?

Pas directement. La bibliothèque gère le format MSG. Utilisez MapiMessage.from_email_message() pour convertir depuis RFC 5322 EmailMessage objets.

La sécurité des threads est‑elle prise en charge ?

Chaque MapiMessage et CFBReader l’instance est indépendante. L’accès concurrent à des instances distinctes depuis des threads séparés est sûr.


Résumé de la référence API

Classe / MéthodeDescription
MapiMessageReprésentation de message MSG de haut niveau
MapiMessage.from_file()Charger un fichier MSG
MapiMessage.create()Créer un nouveau message MSG
MapiMessage.save()Enregistrer dans un fichier MSG
MapiMessage.to_email_message()Convertir en EmailMessage (RFC 5322)
MapiMessage.from_email_message()Convertir d’EmailMessage en MSG
MapiMessage.add_recipient()Ajouter un destinataire
MapiMessage.add_attachment()Ajouter une pièce jointe binaire
MapiAttachmentPièce jointe d’un message
MapiRecipientDestinataire d’un message
MapiPropertyEntrée de propriété MAPI
CFBReaderLecteur de conteneur CFB de bas niveau
CFBWriterÉcrivain de conteneur CFB de bas niveau
MsgReaderLecteur de structure MSG de bas niveau
 Français