Process Outlook Email Attachments & Embedded Messages in C#

Les pièces jointes d’e-mail sont des fichiers envoyés avec un message e-mail, permettant aux utilisateurs de partager des documents, des images, des vidéos ou tout autre contenu numérique. Gérer efficacement les pièces jointes d’e-mail est un aspect crucial des systèmes de communication modernes, et pour les développeurs C# recherchant une solution robuste pour les gérer sans effort au sein de leurs applications.

API C# .NET pour gérer les pièces jointes d’e-mail

Pour traiter les pièces jointes d’e-mail, nous allons utiliser Aspose.Email pour .NET, une API puissante et complète conçue pour les développeurs C# afin de travailler avec des messages e-mail et diverses tâches connexes au sein de leurs applications .NET. Elle offre une large gamme de fonctionnalités pour créer, traiter, convertir et gérer des messages, en faisant un outil précieux pour les entreprises et les développeurs qui ont besoin d’intégrer des capacités d’e-mail dans leurs applications logicielles. Pour tirer parti de la puissance de l’API, téléchargez sa DLL ou installez-la depuis NuGet.

Ajout de pièces jointes régulières

Les pièces jointes régulières sont des fichiers autonomes inclus avec un message e-mail, généralement affichés comme des icônes ou des liens séparés dans le corps.

Exemple de pièce jointe d'e-mail - Pièce jointe régulière

L’API intuitive d’Aspose.Email vous permet d’ajouter une pièce jointe régulière à un message en quelques lignes de code. Avec les étapes et un exemple de code ci-dessous, vous allez créer un message e-mail d’exemple (MSG) et y ajouter une pièce jointe de fichier (“document.pdf”) en utilisant la classe MapiMessage en C# :

  1. Créez ou chargez un MapiMessage.
  2. Lisez le contenu du “document.pdf” dans un tableau de bytes.
  3. Ajoutez la pièce jointe avec le nom (“document.pdf”) et les données à la collection Attachments du message.
// Create a sample MSG and add document.pdf file as attachment
var msg = new MapiMessage("user1@from.com", "user2@to.com", "This is subject", "This is body");
var data = File.ReadAllBytes("document.pdf");
msg.Attachments.Add("document.pdf", data);

Ajout de pièces jointes en ligne

Les pièces jointes en ligne sont destinées à être affichées dans le corps du message e-mail lui-même. Cela est souvent utilisé pour intégrer des images ou d’autres médias directement dans le contenu de l’e-mail, permettant au destinataire de visualiser le contenu sans avoir besoin d’ouvrir une pièce jointe séparée.

Exemple de pièce jointe d'e-mail - Pièce jointe en ligne

L’image dans le contenu du message est une pièce jointe en ligne. L’API Aspose.Email permet de vérifier si une pièce jointe est en ligne avant d’effectuer d’autres manipulations avec celle-ci, et l’exemple de code ci-dessous démontre comment effectuer cette tâche.

  1. Chargez le message e-mail à partir du fichier en utilisant la méthode MapiMessage.Load().
  2. Parcourez sa collection de pièces jointes.
  3. Pour chaque pièce jointe dans la collection, imprimez leurs noms d’affichage avec des valeurs booléennes indiquant si elles sont en ligne ou régulières.
// Check if the Attachment is Inline or Regular
var msg = MapiMessage.Load("message.msg");
foreach (var attach in msg.Attachments)
{
Console.WriteLine($"{attach.DisplayName} : {attach.IsInline}");
}

Ajout de pièces jointes de référence

Les pièces jointes de référence ne contiennent pas le contenu réel du fichier dans le message e-mail. Au lieu de cela, elles incluent des liens vers des ressources externes, telles que des images hébergées sur un serveur web. Lorsque le destinataire ouvre l’e-mail, son client ou son navigateur web récupère ces ressources à partir des URL spécifiées pour afficher le contenu. Ainsi, un utilisateur peut l’envoyer avec un lien vers un fichier stocké dans Google Drive. Au lieu d’attacher directement le document au message, vous pouvez créer une pièce jointe de lien qui renvoie au fichier sur Google Drive.

Exemple de pièce jointe d'e-mail - Pièce jointe de référence

L’exemple de code ci-dessous démontre comment créer un message avec une pièce jointe de référence :

  1. Créez ou chargez un objet MapiMessage.
  2. Ajoutez une pièce jointe de référence au message en utilisant la méthode MapiAttachmentCollection.Add, en fournissant le nom du fichier, l’URL du fichier, l’URL du dossier et le nom du fournisseur.
  3. Définissez le type de permission pour la pièce jointe en utilisant la méthode MapiAttachment.SetProperty pour spécifier qui peut la modifier.
  4. En option, vous pouvez définir des propriétés supplémentaires, telles que le type de permission d’origine, si la pièce jointe est un dossier, l’URL du point de terminaison du fournisseur, l’URL d’aperçu et l’URL de la miniature.
  5. Enregistrez le message dans un fichier en utilisant la méthode Save.
// Create a message
var msg = new MapiMessage("from@domain.com", "to@domain.com", "Outlook message file",
"This message with the Reference Attachment", OutlookMessageFormat.Unicode);
// 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].SetProperty(KnownPropertyList.AttachmentPermissionType, AttachmentPermissionType.AnyoneCanEdit);
msg.Attachments[0].SetProperty(KnownPropertyList.AttachmentOriginalPermissionType, 0);
msg.Attachments[0].SetProperty(KnownPropertyList.AttachmentIsFolder, false);
msg.Attachments[0].SetProperty(KnownPropertyList.AttachmentProviderEndpointUrl, "");
msg.Attachments[0].SetProperty(KnownPropertyList.AttachmentPreviewUrl, "");
msg.Attachments[0].SetProperty(KnownPropertyList.AttachmentThumbnailUrl, "");
// Finally save the message
msg.Save(@"my.msg");

Ajout de messages intégrés

Les messages intégrés sont ceux inclus ou imbriqués dans un autre message e-mail. Ils peuvent contenir leur propre contenu, pièces jointes et métadonnées, et sont généralement encapsulés dans le corps ou en tant que pièces jointes du message parent.

Ce concept est couramment utilisé dans des scénarios tels que le transfert ou la réponse à des e-mails, où le message original est inclus comme partie du nouveau message. Dans de tels cas, le message original devient un message intégré dans le corps du nouveau message tout en préservant son propre contenu, y compris l’expéditeur, les destinataires, et le sujet. Cette fonctionnalité est fondamentale pour la communication par e-mail et permet aux utilisateurs de maintenir un fil de conversation cohérent tout en échangeant des messages.

Exemple de message intégré

Aspose.Email fournit des composants pour cette mise en œuvre. L’exemple de code suivant avec des étapes démontre comment ajouter un objet intégré à un message e-mail :

  1. Créez une instance de la classe MapiMessage.
  2. Chargez le message existant à partir du fichier en utilisant la méthode MapiMessage.Load().
  3. Ajoutez le message chargé en tant que pièce jointe au message précédemment créé. Utilisez la méthode MapiAttachmentCollection.Add à cette fin.
var msg = new MapiMessage("from@test.com", "to@test.com", "Subj", "This is a message body");
var attachMsg = MapiMessage.Load("Weekly report.msg");
msg.Attachments.Add("Weekly report", attachMsg);

Enregistrement de toutes les pièces jointes au format MSG en tant que fichiers séparés

L’exemple de code ci-dessous vous montrera comment charger un message e-mail à partir d’un fichier et enregistrer chaque pièce jointe individuelle du message dans un fichier séparé avec son nom de fichier d’origine.

  1. Créez une instance de la classe MapiMessage.
  2. Parcourez la collection de pièces jointes du message chargé.
  3. Pour chaque pièce jointe, enregistrez-la en tant que fichier séparé en utilisant la méthode Save, en vous assurant que chaque pièce jointe est enregistrée avec son nom de fichier d’origine.
// Create an instance of MapiMessage from file
var msg = MapiMessage.Load("message.msg");
// Iterate through the attachments collection
foreach (var attachment in msg.Attachments)
{
// Save the individual attachment
attachment.Save(attachment.FileName);
}

Conclusion

Dans cet article, nous avons exploré la mise en œuvre pratique de l’ajout de différents types de pièces jointes et d’objets intégrés aux messages e-mail, l’enregistrement des pièces jointes dans des fichiers séparés en C#, en fournissant des exemples de code concis pour illustrer les processus. Aspose.Email pour .NET émerge comme une solution polyvalente permettant aux développeurs de gérer efficacement les pièces jointes d’e-mail et d’améliorer les tâches de communication au sein de leurs applications, garantissant ainsi une expérience cohérente et fluide pour les utilisateurs finaux.

Ressources gratuites :

  • forum de support pour poser des questions, demander de l’aide et interagir avec la communauté pour résoudre des problèmes ou obtenir des informations sur l’utilisation efficace de la bibliothèque
  • documentation exhaustive qui couvre de manière complète divers aspects de la fonctionnalité de la bibliothèque avec accès à références API, tutoriels, exemples de code et meilleures pratiques
  • blog informatif couvrant un large éventail de sujets liés à la gestion des e-mails, au traitement des pièces jointes, et d’autres sujets pertinents avec des informations, des conseils et des mises à jour sur les dernières fonctionnalités et développements au sein de l’écosystème Aspose.Email
  • applications gratuites conçues pour améliorer la gestion des e-mails et la productivité des utilisateurs sur différentes plateformes

Voir aussi :