Introducción
Aspose.Email FOSS for .NET es una biblioteca C# gratuita y de código abierto que le permite trabajar con Outlook archivos MSG, contenedores Compound File Binary (CFB) y mensajes EML directamente en su .NET aplicación — sin Microsoft Outlook, sin interop COM y sin bibliotecas nativas requeridas. Distribuya el como un único paquete NuGet y se ejecuta idénticamente en Windows, Linux, macOS, contenedores Docker, y funciones sin servidor.
La biblioteca resuelve un problema recurrente en el trabajo empresarial y de integración: los archivos Outlook .msg son producidos por millones de usuarios empresariales, pero analizarlos sin Outlook ha requerido históricamente automatización COM o bibliotecas comerciales costosas. Aspose.Email FOSS for .NET proporciona soporte completo de lectura/escritura para MSG, el contenedor binario CFB subyacente y el formato EML/MIME — todo bajo la licencia MIT sin restricciones de uso.
Ya sea que estés construyendo una canalización de archivado de correo electrónico, una herramienta de migración, un extractor de adjuntos,
o un generador automático de MSG, esta biblioteca te brinda acceso directo y de bajo nivel a cada byte del
formato de correo electrónico junto con una API de alto nivel MapiMessage que te permite comenzar en minutos.
Características clave
Leer archivos MSG de Outlook
Abra cualquier archivo .msg desde una ruta o flujo con MsgReader.FromFile() o MsgReader.FromStream().
Acceda al flujo completo de propiedades MAPI, a los registros de destinatarios y a los sub‑almacenes de adjuntos al
nivel de byte sin procesar mediante MsgStorage y MsgStream.
using System.IO;
using Aspose.Email.Foss.Msg;
using var stream = File.OpenRead("sample.msg");
var message = MapiMessage.FromStream(stream);
Console.WriteLine(message.Subject);
Crear archivos MSG desde cero
Construya un correo electrónico completo programáticamente usando MapiMessage.Create(). Establezca el asunto, el cuerpo de texto sin formato
cuerpo HTML, nombre del remitente, dirección de correo electrónico del remitente, hora de entrega e ID de mensaje de Internet, luego
añada destinatarios con AddRecipient() y archivos adjuntos con AddAttachment(). Serialice con
message.Save().
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 a MSG (y volver)
Cargue un archivo estándar RFC 5322 .eml en un MapiMessage con MapiMessage.LoadFromEml(),
luego guárdelo como un archivo Outlook .msg — o invierta el proceso con MapiMessage.SaveToEml().
El analizador MIME incorporado conserva el asunto, el cuerpo, el cuerpo HTML, el remitente, los destinatarios y los archivos adjuntos
a través de viajes de ida y vuelta completos EML ↔ MSG.
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);
Acceso de bajo nivel al contenedor CFB
Los archivos Outlook MSG se construyen sobre el formato Compound File Binary (CFB), un contenedor binario jerárquico similar a un sistema de archivos. CfbReader expone el árbol de directorios completo: itere almacenes y flujos con IterStorages(), IterStreams() y IterChildren(), navegue a entradas específicas por ruta con ResolvePath() y lea los bytes sin procesar del flujo con GetStreamData().
CfbWriter le permite construir y serializar un documento CFB desde cero. Cree un CfbDocument, adjunte los nodos CfbStorage y CfbStream, y llame a CfbWriter.ToBytes() o CfbWriter.WriteFile() para serializar.
Acceso a Propiedades MAPI y Adjuntos
La clase MapiPropertyCollection proporciona acceso tipado a propiedades MAPI para cualquier objeto MSG o de almacenamiento: use Get(), Set(), Add() y Remove() con los valores de enumeración estándar CommonMessagePropertyId o PropertyTypeCode. Acceda a los metadatos del adjunto y a los datos binarios mediante las propiedades MapiAttachment: Filename, MimeType, ContentId y Data.
Inicio rápido
Instala el paquete:
dotnet add package Aspose.Email.Foss
Leer el asunto de un archivo MSG:
using System.IO;
using Aspose.Email.Foss.Msg;
using var stream = File.OpenRead("sample.msg");
var message = MapiMessage.FromStream(stream);
Console.WriteLine(message.Subject);
Console.WriteLine(message.SenderEmailAddress);
foreach (var recipient in message.Recipients)
Console.WriteLine($"To: {recipient.EmailAddress}");
foreach (var attachment in message.Attachments)
Console.WriteLine($"Attachment: {attachment.Filename} ({attachment.MimeType})");
Formatos compatibles
| Formato | Extensión | Lectura | Escritura |
|---|---|---|---|
| Compound File Binary | .cfb | ✓ | ✓ |
| Outlook Message | .msg | ✓ | ✓ |
| MIME / EML | .eml | ✓ | ✓ |
Código abierto y licencias
Aspose.Email FOSS for .NET se publica bajo la licencia MIT. Puede usarlo libremente en proyectos personales, comerciales y de código abierto sin restricciones de uso. El código fuente está disponible en github.com/aspose-email-foss/Aspose.Email-FOSS-for-.Net.