Travailler avec les pièces jointes du message
Gestion des pièces jointes avec Aspose Outlook
Création et enregistrement de fichiers Outlook Message (MSG) expliquent comment créer et enregistrer des messages, et comment créer des fichiers MSG avec pièces jointes. Cet article décrit comment gérer les pièces jointes Microsoft Outlook avec Aspose.Email. Les pièces jointes d’un fichier de message sont accessibles et enregistrées sur le disque à l’aide de la propriété Attachments de la classe MapiMessage. La propriété Attachments est une collection de type classe MapiAttachmentCollection.
Vérifier si la pièce jointe est en ligne ou ordinaire
"Inline" et "Regular" font référence à la manière dont elles sont incluses dans un message électronique. Les pièces jointes Regular sont des fichiers attachés de façon traditionnelle. Elles sont généralement affichées dans une liste dans le client de messagerie et peuvent être téléchargées par le destinataire et enregistrées sur un stockage local. Les pièces jointes Inline, également appelées images incorporées ou inline, sont généralement utilisées pour inclure des images ou d’autres médias dans le corps du courriel. Elles ne sont pas affichées dans une liste séparée mais apparaissent directement dans le contenu du courriel, par exemple dans le corps du message. Cela vous permet d’inclure des images ou d’autres médias faisant partie du contenu du message. L’exemple de code ci‑dessus montre comment déterminer si une pièce jointe est inline ou regular :
import aspose.email as ae
msg = ae.mapi.MapiMessage.load("message.msg")
for attachment in msg.attachments:
print(f"{attachment.display_name}:{attachment.is_inline}")
Enregistrement des pièces jointes à partir d’un fichier Outlook Message (MSG)
Pour enregistrer les pièces jointes d’un fichier MSG :
- Parcourez la collection MapiAttachmentCollection et récupérez les pièces jointes individuelles.
- Pour enregistrer les pièces jointes, appelez la méthode Save() de la classe MapiAttachment.
L’extrait de code suivant montre comment enregistrer les pièces jointes sur le disque local.
import aspose.email as ae
data_dir = "C://dataDir/"
file_name = "message.msg"
# Create an instance of MapiMessage from file
message = ae.mapi.MapiMessage.from_file(data_dir + file_name)
# Iterate through the attachments collection
for attachment in message.attachments:
# Save the individual attachment
attachment.save(data_dir + attachment.file_name)
Obtention de pièces jointes de messages imbriqués
Les pièces jointes OLE incorporées apparaissent également dans la collection Attachment de la classe MapiMessage. L’exemple de code suivant analyse un fichier de message à la recherche de pièces jointes de messages incorporés et les enregistre sur le disque. La méthode statique FromProperties() de la classe MapiMessage peut créer un nouveau message à partir d’une pièce jointe incorporée. L’extrait de code suivant montre comment obtenir des pièces jointes de messages imbriqués.
import aspose.email as ae
eml = ae.mapi.MapiMessage.load("my.msg")
# Create a MapiMessage object from the individual attachment
get_attachment = ae.mapi.MapiMessage.from_properties(eml.attachments[0].object_data.properties)
# Create an object of type MailMessageInterpreter from the above message and save the embedded message to a file on disk
mail_message = get_attachment.to_mail_message(ae.mapi.MailConversionOptions())
mail_message.save("NestedMailMessageAttachments_out.eml", ae.SaveOptions.default_eml)
Suppression de pièces jointes
La bibliothèque Aspose Outlook offre la fonctionnalité de supprimer des pièces jointes des fichiers Microsoft Outlook Message (.msg) :
- Appelez la méthode RemoveAttachments(). Elle prend le chemin du fichier du message en paramètre. Elle est implémentée comme méthode publique statique, vous n’avez donc pas besoin d’instancier l’objet.
L’extrait de code suivant montre comment supprimer des pièces jointes.
import aspose.email as ae
ae.mapi.MapiMessage.remove_attachments("AttachmentsToRemove_out.msg")
Vous pouvez également appeler la méthode statique DestoryAttachment() de la classe MapiMessage. Elle fonctionne plus rapidement que RemoveAttachment(), car cette dernière analyse le fichier du message.
import aspose.email as ae
# Destroy attachments in the MapiMessage
ae.mapi.MapiMessage.destroy_attachments(data_dir + "AttachmentsToDestroy_out.msg")
Ajout de pièces jointes MSG
Un message Outlook peut contenir d’autres messages Microsoft Outlook en pièces jointes, soit en tant que messages réguliers, soit en tant que messages incorporés. La MapiAttachmentCollection propose des surcharges de la méthode Add pour créer des messages Outlook avec les deux types de pièces jointes.
Essayez-le !
Ajoutez ou supprimez des pièces jointes d’e‑mail en ligne avec le gratuit Aspose.Email Editor App.
Ajouter une pièce jointe de référence à un MapiMessage
"Reference attachment" désigne généralement une pièce jointe contenant une référence ou un lien vers une ressource externe plutôt que le fichier réel lui‑même. Ces références sont souvent utilisées dans les courriels HTML pour lier des images ou des ressources hébergées sur un serveur distant. Au lieu d’incorporer le fichier complet, une pièce jointe de référence inclut une URL ou une référence au contenu externe.
Aspose.Email fournit un ensemble d’outils pour l’affichage correct des pièces jointes de référence présenté dans l’exemple de code suivant :
import aspose.email as ae
msg = ae.mapi.MapiMessage.load("message.msg")
# Add reference attachment
msg.attachments.add("Document.pdf",
"https://drive.google.com/file/d/1HJ-M3F2qq1oRrTZ2GZhUdErJNy2CT3DF/",
"https://drive.google.com/drive/my-drive",
"GoogleDrive")
# Also, you can set additional attachment properties
msg.attachments[0].set_property(ae.mapi.KnownPropertyList.ATTACHMENT_PERMISSION_TYPE, int(ae.AttachmentPermissionType.ANYONE_CAN_EDIT))
msg.attachments[0].set_property(ae.mapi.KnownPropertyList.ATTACHMENT_ORIGINAL_PERMISSION_TYPE, 0)
msg.attachments[0].set_property(ae.mapi.KnownPropertyList.ATTACHMENT_IS_FOLDER, False)
msg.attachments[0].set_property(ae.mapi.KnownPropertyList.ATTACHMENT_PROVIDER_ENDPOINT_URL, "")
msg.attachments[0].set_property(ae.mapi.KnownPropertyList.ATTACHMENT_PREVIEW_URL, "")
msg.attachments[0].set_property(ae.mapi.KnownPropertyList.ATTACHMENT_THUMBNAIL_URL, "")
# Finally save the message
msg.save("msg_with_ref_attach.msg")
Intégrer un message en tant que pièce jointe
L’extrait de code suivant montre comment les fichiers MSG Outlook incorporés dans un fichier MSG contiennent un PR_ATTACH_METHOD dont la valeur est égale à 5.
import aspose.email as ae
# Create a new MapiMessage
message = ae.mapi.MapiMessage("from@test.com", "to@test.com", "Subj", "This is a message body")
# Load the attachment message
attach_msg = ae.mapi.MapiMessage.load("Message.msg")
# Add the attachment to the message
message.attachments.add("Weekly report.msg", attach_msg)
# Save the message with the embedded message attachment
message.save("WithEmbeddedMsg_out.msg")
Lire les messages intégrés à partir des pièces jointes
L’extrait de code suivant montre comment lire un message incorporé depuis une pièce jointe.
import aspose.email as ae
file_name = "path/to/file.msg"
# Load the MapiMessage from file
message = ae.mapi.MapiMessage.from_file(file_name)
# Check if the first attachment is an Outlook message
if message.attachments[0].object_data.is_outlook_message:
# Get the embedded message as MapiMessage
embedded_message = message.attachments[0].object_data.to_mapi_message()
# Perform further operations with the embedded message
# ...
Insertion et remplacement de pièces jointes
L’API Aspose.Email permet d’insérer des pièces jointes à un indice précis dans le message parent. Elle offre également la possibilité de remplacer le contenu d’une pièce jointe par une autre pièce jointe de message. L’extrait de code suivant montre comment insérer et remplacer des pièces jointes.
Insertion à un emplacement spécifique
L’API Aspose.Email offre la possibilité d’insérer une pièce jointe MSG dans un MSG parent en utilisant la méthode Insert de MapiAttachmentCollection : MapiAttachmentCollection Insert(int index, string name, MapiMessage msg). L’extrait de code suivant montre comment insérer à un emplacement spécifique.
import aspose.email as ae
from io import BytesIO
file_name = "path/to/file.msg"
# Load the MapiMessage from file
message = ae.mapi.MapiMessage.load(file_name)
# Save the attachment to a memory stream
memory_stream = BytesIO()
message.attachments[2].save(memory_stream)
# Load the attachment from the memory stream
get_data = ae.mapi.MapiMessage.load(memory_stream)
# Insert the loaded attachment at index 1
message.attachments.insert(1, "new 11", get_data)
Remplacer le contenu de la pièce jointe
Cela permet de remplacer le contenu d’une pièce jointe incorporée par un nouveau en utilisant la méthode Replace. Toutefois, il est impossible d’insérer une pièce jointe avec PR_ATTACH_NUM = 4 (par exemple) dans une collection dont le compteur est de 2. L’extrait de code suivant montre comment remplacer le contenu d’une pièce jointe.
import aspose.email as ae
from io import BytesIO
file_name = "path/to/file.msg"
# Load the MapiMessage from file
message = ae.mapi.MapiMessage.load(file_name)
# Save the attachment to a memory stream
memory_stream = BytesIO()
message.attachments[2].save(memory_stream)
# Load the attachment from the memory stream
get_data = ae.mapi.MapiMessage.load(memory_stream)
# Replace the attachment at index 1 with the loaded attachment
message.attachments.replace(1, "new 1", get_data)
Renommer une pièce jointe dans un MapiMessage
Il est possible de modifier les noms d’affichage des pièces jointes dans les messages électroniques chargés depuis un fichier. L’exemple de code ci‑dessous montre comment procéder :
import aspose.email as ae
msg = ae.mapi.MapiMessage.load("message.msg")
msg.attachments[0].display_name = "New display name 1"
msg.attachments[1].display_name = "New display name 2"