1. Produits
  2.   Aspose.Email
  3.   Aspose.Email FOSS for .NET

Aspose.Email FOSS pour .NET

Lisez, créez et traitez les fichiers Outlook MSG, les conteneurs CFB et les messages EML depuis .NET — gratuit et open source, sans dépendance Microsoft Outlook.

Bibliothèque .NET open source pour les fichiers MSG, CFB et EML

Aspose.Email FOSS pour .NET est une bibliothèque C# sous licence MIT, sans dépendances, pour travailler avec les fichiers .msg de Microsoft Outlook, les conteneurs Compound File Binary (CFB) et les messages EML. Ajoutez un seul package NuGet et commencez immédiatement à lire, créer et traiter les messages électroniques sans installer Microsoft Outlook ni aucun runtime propriétaire.

La bibliothèque offre deux niveaux d’accès. Au niveau bas, CfbReader et CfbWriter donnent un contrôle complet sur les conteneurs binaires CFB — parcourir les entrées de répertoire, lire et écrire les nœuds de stockage et les données de flux, et inspecter la disposition brute des secteurs. MsgReader et MsgWriter gèrent le format MSG au-dessus de CFB, exposant les flux de propriétés MAPI, les tables de destinataires et les sous‑stockages de pièces jointes. Au niveau haut, MapiMessage vous permet de créer de nouveaux messages à partir de zéro, de lire le sujet, le corps, l’expéditeur et les destinataires, de gérer les pièces jointes, et de convertir entre les formats MSG et EML via une implémentation MIME intégrée.

La bibliothèque cible .NET 8.0 ou version ultérieure et n’a aucune dépendance native, ce qui la rend adaptée à Windows, Linux, macOS, les conteneurs Docker et les fonctions sans serveur. Pour des fonctionnalités supplémentaires et un support commercial, voir Aspose.Email for .NET.

Lecture et écriture de conteneur CFB

  • Ouvrir des fichiers CFB : Charger des conteneurs CFB existants à partir d’un chemin de fichier, d’un flux ou d’un tableau d’octets via CfbReader.FromFile(), CfbReader.FromStream() ou new CfbReader(data).
  • Parcourir l’arborescence du répertoire : Itérer les stockages, les flux et les enfants en utilisant IterStorages(), IterStreams(), IterChildren() et IterTree().
  • Résoudre les chemins: Naviguez dans les hiérarchies de stockage imbriquées avec ResolvePath(names) pour localiser un flux spécifique par chaîne de noms.
  • Écrire des conteneurs CFB: Construisez des documents CFB de manière programmatique avec CfbDocument et sérialisez‑les en octets ou en fichier via CfbWriter.ToBytes() ou CfbWriter.WriteFile().
  • Ajouter des stockages et des flux: Attachez les nœuds CfbStorage et CfbStream à n’importe quel nœud de stockage avant la sérialisation.

Où l'accès CFB est utilisé

  • Inspection de fichier MSG: CFB est le format de conteneur pour les fichiers Outlook .msg — l’accès direct à CFB permet une inspection et une réparation forensiques.
  • Formats binaires personnalisés : Toute application héritée utilisant CFB pour le stockage des données peut être lue ou écrite sans dépendance COM.
  • Récupération de données: Parcourez l’arborescence complète du répertoire et extrayez les octets bruts du flux à partir de fichiers CFB endommagés ou non standard.
  • Test de round-trip binaire: Sérialisez un document en octets et rechargez-le pour vérifier une sérialisation sans perte dans les tests automatisés.

Lecture et écriture de fichier MSG

  • Lire les fichiers MSG : Ouvrez les fichiers MSG d’Outlook avec MsgReader.FromFile() ou MsgReader.FromStream() et accédez aux flux de propriétés MAPI sous-jacents, aux enregistrements de destinataires et aux sous-stockages de pièces jointes.
  • Écrire des fichiers MSG : Produisez des fichiers MSG à partir d’un MsgDocument avec MsgWriter.ToBytes() ou MsgWriter.WriteFile().
  • Accès MAPI de bas niveau : Lire les flux de propriétés de niveau supérieur, les propriétés nommées et les données de pièces jointes via MsgStorage, MsgStream et MsgStorage.FindStream().
  • Navigation du stockage MSG: Utilisez MsgStorage.FindStream() et MsgStorage.FindStorage() pour localiser les sous‑entrées nommées.

Où le traitement MSG est utilisé

  • Pipelines d’archivage d’e-mails: Lecture en masse des fichiers .msg depuis les répertoires d’archive et extraire les métadonnées ou les pièces jointes.
  • Outils de migration : Convertir les collections MSG en formats standard pour l’importation dans des systèmes non Outlook.
  • Découverte juridique: Analyser les flux de propriétés MAPI bruts pour extraire tous les champs de message, y compris les propriétés non standard.
  • Livraison automatisée de rapports: Construisez les fichiers .msg de manière programmatique et livrez‑les aux systèmes de messagerie basés sur Outlook.

API de messages de haut niveau

  • Créer des messages: Construisez un e‑mail complet avec MapiMessage.Create(subject, body), définissez SenderName, SenderEmailAddress et HtmlBody.
  • Ajouter des destinataires : Attachez les destinataires To, Cc et Bcc via AddRecipient() avec l’adresse e-mail et le nom d’affichage.
  • Gérer les pièces jointes : Ajouter des pièces jointes de fichier et de flux avec AddAttachment() ou construire des objets MapiAttachment directement avec Filename, MimeType, ContentId et Data.
  • Enregistrer et recharger : Sérialiser avec message.Save() ou message.Save(stream) et recharger avec MapiMessage.FromFile() ou MapiMessage.FromStream().

Où l'API de haut niveau est utilisée

  • Génération automatisée d’e-mails : Générez des milliers de fichiers MSG personnalisés à partir d’enregistrements de données dans des travaux par lots.
  • Création de fixtures de test: Construire des fichiers MSG fiables avec un contenu prévisible pour les suites de tests d’intégration.
  • Extraction des pièces jointes: Chargez un fichier MSG, parcourez message.Attachments, et enregistrez chaque attachment.Data sur le disque.
  • Inspection de propriété : Accédez à message.Subject, message.Body, message.SenderEmailAddress et message.Recipients sans automatisation COM.

Conversion EML et MIME

  • Charger EML dans MapiMessage: Analyser un fichier .eml standard (RFC 5322 / MIME) en un objet complet MapiMessage via MapiMessage.LoadFromEml(stream).
  • Enregistrer MapiMessage au format EML: Sérialisez un MapiMessage en format MIME avec message.SaveToEml() ou message.SaveToEml(stream).
  • Fidélité du trajet aller‑retour : Sujet, corps, corps HTML, expéditeur, destinataires et pièces jointes sont tous conservés lors des allers‑retours EML → MSG → EML.
  • Pas de parseur MIME externe: L’analyse EML est implémentée nativement dans la bibliothèque — aucune dépendance à System.Net.Mail requise.

Où la conversion EML est utilisée

  • Passerelle de format : Recevez les e‑mails au format EML depuis les serveurs de messagerie et convertissez‑les en MSG pour un stockage compatible Outlook.
  • Conformité aux normes: Convertir les fichiers MSG propriétaires en MIME standard pour la livraison à tout transport de courrier.
  • Normalisation d’archivage: Normaliser une archive mixte de fichiers .eml et .msg en un seul format.
  • Flux de travail de test: Générez des fixtures .eml dans les tests et vérifiez qu’elles survivent au aller-retour MSG sans perte de données.

Lire l’objet d’un fichier MSG

Ouvrez un fichier Outlook MSG à partir d’un flux et affichez l’objet — aucun Microsoft Outlook requis.

using System.IO;
using Aspose.Email.Foss.Msg;
using var stream = File.OpenRead("sample.msg");
var message = MapiMessage.FromStream(stream);
Console.WriteLine(message.Subject);

Créer et enregistrer un message MSG

Créez un e‑mail complet avec l’expéditeur, le destinataire et la pièce jointe, puis enregistrez‑le dans un fichier MSG.

using System.IO;
using Aspose.Email.Foss.Msg;
var message = MapiMessage.Create("Hello", "Body");
message.SenderName = "Alice";
message.SenderEmailAddress = "alice@example.com";
message.AddRecipient("bob@example.com", "Bob");
using var attachmentStream = new MemoryStream("abc"u8.ToArray());
message.AddAttachment("note.txt", attachmentStream, "text/plain");
using var output = File.Create("hello.msg");
message.Save(output);

Convertir EML en MSG

Chargez un fichier .eml standard et enregistrez-le en tant que fichier Outlook .msg à l’aide du parseur MIME intégré.

using System.IO;
using Aspose.Email.Foss.Msg;
using var input = File.OpenRead("message.eml");
var message = MapiMessage.LoadFromEml(input);
using var msgOutput = File.Create("message.msg");
message.Save(msgOutput);
using var emlOutput = File.Create("roundtrip.eml");
message.SaveToEml(emlOutput);
  

Ressources de support et d'apprentissage

 Français