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

Aspose.Email FOSS para .NET

Lee, crea y procesa archivos Outlook MSG, contenedores CFB y mensajes EML desde .NET — gratuito y de código abierto, sin dependencia de Microsoft Outlook.

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

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

La biblioteca proporciona dos niveles de acceso. En el nivel bajo, 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 subalmacenamientos de adjuntos. En el nivel alto, MapiMessage te permite crear nuevos mensajes desde cero, leer el asunto, el cuerpo, el remitente y los destinatarios, gestionar los adjuntos y convertir entre los formatos MSG y EML mediante una implementación MIME incorporada.

La biblioteca tiene como objetivo .NET 8.0 o posterior y no tiene dependencias nativas, lo que la hace adecuada para Windows, Linux, macOS, contenedores Docker y funciones sin servidor. Para obtener características adicionales y soporte comercial, consulte Aspose.Email for .NET.

Lectura y escritura de contenedores CFB

  • Abrir archivos CFB: Cargue contenedores CFB existentes desde una ruta de archivo, flujo o matriz de bytes mediante CfbReader.FromFile(), CfbReader.FromStream() o new CfbReader(data).
  • Recorrer el árbol de directorios: Iterar almacenes, flujos y hijos usando IterStorages(), IterStreams(), IterChildren() y IterTree().
  • Resolver rutas: Navegar jerarquías de almacenamiento anidadas con ResolvePath(names) para localizar un flujo específico por cadena de nombres.
  • Escribir contenedores CFB: Construya documentos CFB programáticamente con CfbDocument y serialícelos a bytes o archivo mediante CfbWriter.ToBytes() o CfbWriter.WriteFile().
  • Agregar almacenes y flujos: Adjunte los nodos CfbStorage y CfbStream a cualquier nodo de almacenamiento antes de la serialización.

Dónde se Utiliza el Acceso CFB

  • Inspección de archivos MSG: CFB es el formato contenedor para archivos .msg de Outlook — el acceso directo a CFB permite la inspección forense y la reparación.
  • Formatos binarios personalizados: Cualquier aplicación heredada que use CFB para el almacenamiento de datos puede leerse o escribirse sin una dependencia COM.
  • Recuperación de datos: Recorra todo el árbol de directorios y extraiga los bytes de flujo sin procesar de archivos CFB dañados o no estándar.
  • Pruebas de ida y vuelta binarias: Serializa un documento a bytes y recárgalo para verificar la serialización sin pérdida en pruebas automatizadas.

Lectura y escritura de archivos MSG

  • Leer archivos MSG: Abra archivos MSG de Outlook con MsgReader.FromFile() o MsgReader.FromStream() y acceda a los flujos de propiedades MAPI subyacentes, a los registros de destinatarios y a los subalmacenes de adjuntos.
  • Escribir archivos MSG: Generar archivos MSG a partir de un MsgDocument con MsgWriter.ToBytes() o MsgWriter.WriteFile().
  • Acceso MAPI de bajo nivel: Leer flujos de propiedades de nivel superior, propiedades con nombre y datos de adjuntos a través de MsgStorage, MsgStream y MsgStorage.FindStream().
  • Navegación del almacenamiento MSG: Utilice MsgStorage.FindStream() y MsgStorage.FindStorage() para localizar subentradas nombradas.

Dónde se utiliza el procesamiento de MSG

  • Flujos de archivo de correo electrónico: Lectura masiva de archivos .msg desde directorios de archivo y extracción de metadatos o adjuntos.
  • Herramientas de migración: Convertir colecciones MSG a formatos estándar para importación en sistemas que no son Outlook.
  • Descubrimiento legal: Analiza flujos de propiedades MAPI sin procesar para extraer todos los campos del mensaje, incluidas las propiedades no estándar.
  • Entrega automatizada de informes: Construya archivos .msg programáticamente y envíelos a sistemas de correo basados en Outlook.

API de Mensajes de Alto Nivel

  • Crear mensajes: Construye un correo electrónico completo con MapiMessage.Create(subject, body), establece SenderName, SenderEmailAddress y HtmlBody.
  • Agregar destinatarios: Adjunte To, Cc y Bcc destinatarios a través de AddRecipient() con dirección de correo electrónico y nombre para mostrar.
  • Administrar archivos adjuntos: Agregar archivos y flujos adjuntos con AddAttachment() o construir objetos MapiAttachment directamente con Filename, MimeType, ContentId y Data.
  • Guardar y recargar: Serializar con message.Save() o message.Save(stream) y recargar con MapiMessage.FromFile() o MapiMessage.FromStream().

Dónde se utiliza la API de alto nivel

  • Generación automática de correos electrónicos: Genera miles de archivos MSG personalizados a partir de registros de datos en trabajos por lotes.
  • Creación de fixtures de prueba: Construir archivos MSG de buena calidad conocidos con contenido predecible para los suites de pruebas de integración.
  • Extracción de adjuntos: Cargue un archivo MSG, itere message.Attachments, y guarde cada attachment.Data en disco.
  • Inspección de propiedades: Acceda a message.Subject, message.Body, message.SenderEmailAddress y message.Recipients sin automatización COM.

Conversión de EML y MIME

  • Cargar EML en MapiMessage: Analizar un archivo .eml estándar (RFC 5322 / MIME) en un objeto MapiMessage completo a través de MapiMessage.LoadFromEml(stream).
  • Guardar MapiMessage como EML: Serializar un MapiMessage de nuevo al formato MIME con message.SaveToEml() o message.SaveToEml(stream).
  • Fidelidad de ida y vuelta: Asunto, cuerpo, cuerpo HTML, remitente, destinatarios y archivos adjuntos se conservan a través de los viajes de ida y vuelta EML → MSG → EML.
  • Sin analizador MIME externo: El análisis de EML se implementa de forma nativa dentro de la biblioteca — no se requiere la dependencia System.Net.Mail.

Dónde se utiliza la conversión de EML

  • Puente de formato: Reciba correos electrónicos como EML de los servidores de correo y conviértalos a MSG para almacenamiento compatible con Outlook.
  • Cumplimiento de estándares: Convertir archivos MSG propietarios a MIME estándar para la entrega a cualquier transporte de correo.
  • Normalización de archivo: Normalice un archivo mixto de .eml y .msg a un solo formato.
  • Flujos de prueba: Genera fixtures .eml en pruebas y verifica que sobrevivan al viaje de ida y vuelta de MSG sin pérdida de datos.

Leer el asunto de un archivo MSG

Abra un archivo MSG de Outlook desde un flujo e imprima el asunto — no se requiere Microsoft Outlook.

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 y guardar un mensaje MSG

Cree un correo electrónico completo con remitente, destinatario y archivo adjunto, y luego guárdelo en un archivo 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 a MSG

Cargue un archivo .eml estándar y guárdelo como un archivo .msg de Outlook usando el analizador MIME incorporado.

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

Recursos de soporte y aprendizaje

 Español