1. Productos
  2.   Aspose.Email
  3.   Aspose.Email FOSS para .NET for .NET

Aspose.Email FOSS para .NET

Lea, cree y procese archivos Outlook MSG, contenedores CFB y mensajes EML desde .NET — gratuito y de código abierto, sin dependencia de Microsoft Outlook.

Biblioteca .NET de código abierto para archivos MSG, CFB y EML

Aspose.Email FOSS para .NET es una biblioteca C# sin dependencias y con licencia MIT para trabajar con archivos .msg de Microsoft Outlook, contenedores Compound File Binary (CFB) y mensajes EML. Añade un único paquete NuGet y comienza de inmediato a leer, crear y procesar mensajes de correo electrónico sin instalar Microsoft Outlook ni ningún runtime propietario.

La biblioteca ofrece dos niveles de acceso. A bajo nivel, CfbReader y CfbWriter brindan control total sobre los contenedores binarios CFB — recorre entradas de directorio, lee y escribe nodos de almacenamiento y datos de flujo, e inspecciona la disposición cruda de sectores. MsgReader y MsgWriter manejan el formato MSG sobre CFB, exponiendo flujos de propiedades MAPI, tablas de destinatarios y sub‑almacenamientos de adjuntos. A alto nivel, MapiMessage te permite crear nuevos mensajes desde cero, leer asunto, cuerpo, remitente y destinatarios, gestionar adjuntos y convertir entre los formatos MSG y EML mediante una implementación MIME incorporada.

La biblioteca está dirigida a .NET 8.0 o superior y no tiene dependencias nativas, lo que la hace adecuada para Windows, Linux, macOS, contenedores Docker y funciones sin servidor.

CFB Container Read and Write

  • Open CFB files: Load existing CFB containers from a file path, stream, or byte array via CfbReader.FromFile(), CfbReader.FromStream(), or new CfbReader(data).
  • Traverse the directory tree: Iterate storages, streams, and children using IterStorages(), IterStreams(), IterChildren(), and IterTree().
  • Resolve paths: Navigate nested storage hierarchies with ResolvePath(names) to locate a specific stream by name chain.
  • Write CFB containers: Build CFB documents programmatically with CfbDocument and serialize to bytes or file via CfbWriter.ToBytes() or CfbWriter.WriteFile().
  • Add storages and streams: Attach CfbStorage and CfbStream nodes to any storage node before serialization.

Where CFB Access Is Used

  • MSG file inspection: CFB is the container format for Outlook .msg files — direct CFB access enables forensic inspection and repair.
  • Custom binary formats: Any legacy application using CFB for data storage can be read or written without a COM dependency.
  • Data recovery: Traverse the full directory tree and extract raw stream bytes from damaged or non-standard CFB files.
  • Binary round-trip testing: Serialize a document to bytes and reload it to verify lossless serialization in automated tests.

MSG File Read and Write

  • Read MSG files: Open Outlook MSG files with MsgReader.FromFile() or MsgReader.FromStream() and access the underlying MAPI property streams, recipient records, and attachment sub-storages.
  • Write MSG files: Produce MSG files from a MsgDocument with MsgWriter.ToBytes() or MsgWriter.WriteFile().
  • Low-level MAPI access: Read top-level property streams, named properties, and attachment data via MsgStorage, MsgStream, and MsgReader.ParseTopLevelPropertyStream().
  • MSG storage navigation: Use MsgStorage.FindStream() and MsgStorage.FindStorage() to locate named sub-entries.

Where MSG Processing Is Used

  • Email archival pipelines: Bulk-read .msg files from archive directories and extract metadata or attachments.
  • Migration tools: Convert MSG collections to standard formats for import into non-Outlook systems.
  • Legal discovery: Parse raw MAPI property streams to extract all message fields including non-standard properties.
  • Automated report delivery: Construct .msg files programmatically and deliver them to Outlook-based mail systems.

High-Level Message API

  • Create messages: Build a complete email with MapiMessage.Create(subject, body), set SenderName, SenderEmailAddress, and HtmlBody.
  • Add recipients: Attach To, Cc, and Bcc recipients via AddRecipient() with email address and display name.
  • Manage attachments: Add file and stream attachments with AddAttachment() or construct MapiAttachment objects directly with Filename, MimeType, ContentId, and Data.
  • Save and reload: Serialize with message.Save() or message.Save(stream) and reload with MapiMessage.FromFile() or MapiMessage.FromStream().

Where the High-Level API Is Used

  • Automated email generation: Generate thousands of personalized MSG files from data records in batch jobs.
  • Test fixture creation: Build known-good MSG files with predictable content for integration test suites.
  • Attachment extraction: Load an MSG file, iterate message.Attachments, and save each attachment.Data to disk.
  • Property inspection: Access message.Subject, message.Body, message.SenderEmailAddress, and message.Recipients without COM automation.

EML and MIME Conversion

  • Load EML into MapiMessage: Parse a standard .eml file (RFC 5322 / MIME) into a full MapiMessage object via MapiMessage.LoadFromEml(stream).
  • Save MapiMessage as EML: Serialize a MapiMessage back to MIME format with message.SaveToEml() or message.SaveToEml(stream).
  • Round-trip fidelity: Subject, body, HTML body, sender, recipients, and attachments are all preserved through EML → MSG → EML round-trips.
  • No external MIME parser: EML parsing is implemented natively within the library — no System.Net.Mail dependency required.

Where EML Conversion Is Used

  • Format bridging: Receive emails as EML from mail servers and convert to MSG for Outlook-compatible storage.
  • Standards compliance: Convert proprietary MSG files to standard MIME for delivery to any mail transport.
  • Archival normalization: Normalize a mixed archive of .eml and .msg files to a single format.
  • Testing workflows: Generate .eml fixtures in tests and verify they survive MSG round-trip without data loss.

Read Subject from an MSG File

Open an Outlook MSG file from a stream and print the subject — no Microsoft Outlook required.

using System.IO;
using Aspose.Email.Foss.Msg;
using var stream = File.OpenRead("sample.msg");

var message = MapiMessage.FromStream(stream);
Console.WriteLine(message.Subject);

Create and Save an MSG Message

Build a complete email with sender, recipient, and attachment, then write it to an MSG file.

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

Convert EML to MSG

Load a standard .eml file and save it as an Outlook .msg file using the built-in MIME parser.

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);
 Español