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_issuespour vérifier les problèmes de conformité du format MSG - Le
strictparamètre dansMapiMessage.from_file()contrôle la tolérance aux erreurs — définissez-le àFalsepour une analyse permissive - Toutes les données des pièces jointes sont chargées en mémoire pendant
from_file()— utilisezatt.datapour 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ème | Cause | Correction |
|---|---|---|
CFBError lors du chargement | Fichier CFB/MSG non valide | Vérifiez que le fichier est un véritable Outlook MSG |
| Corps vide après le chargement | Corps stocké uniquement en HTML | Vérifier msg.body_html au lieu de msg.body |
| Destinataires manquants | Le MSG n’a pas de stockage de destinataires | Les 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éthode | Description |
|---|---|
MapiMessage | Repré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 |
MapiAttachment | Pièce jointe d’un message |
MapiRecipient | Destinataire d’un message |
MapiProperty | Entrée de propriété MAPI |
CFBReader | Lecteur de conteneur CFB de bas niveau |
CFBWriter | Écrivain de conteneur CFB de bas niveau |
MsgReader | Lecteur de structure MSG de bas niveau |