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 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 el 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 posterior y no tiene dependencias nativas, lo que la hace adecuada para Windows, Linux, macOS, contenedores Docker y funciones serverless. Para características adicionales y soporte comercial, consulta Aspose.Email for .NET.
CfbReader.FromFile(), CfbReader.FromStream() o new CfbReader(data).IterStorages(), IterStreams(), IterChildren() y IterTree().ResolvePath(names) para localizar un flujo específico mediante una cadena de nombres.CfbDocument y serializarlos a bytes o archivo mediante CfbWriter.ToBytes() o CfbWriter.WriteFile().CfbStorage y CfbStream a cualquier nodo de almacenamiento antes de la serialización..msg — acceso directo a CFD permite la inspección y reparación forense.MsgReader.FromFile() o MsgReader.FromStream() y acceda a las substramas de propiedades MAPI, registros de receptores y sub-encuentros del anexo.MsgDocument con MsgWriter.ToBytes() o MsgWriter.WriteFile().MsgStorage, MsgStream y MsgStorage.FindStream().MsgStorage.FindStream() y MsgStorage.FindStorage() para localizar los sub-encriptores nombrados..msg provienen de los directorios de Archivo y extraen metadatos o anexos..msg programáticamente y envío a sistemas de correo basados en Outlook.MapiMessage.Create(subject, body), establezca SenderName, SenderEmailAddress y HtmlBody.To, Cc y Bcc mediante AddRecipient() con dirección de correo electrónico y nombre para mostrar.AddAttachment() o construya objetos MapiAttachment directamente con Filename, MimeType, ContentId y Data.message.Save() o message.Save(stream) y recargue con MapiMessage.FromFile() o MapiMessage.FromStream().message.Attachments, y guardar cada attachment.Data en disco.message.Subject, message.Body, message.SenderEmailAddress y message.Recipients sin automatización COM..eml (RFC 5322 / MIME) en un objeto completo MapiMessage a través de MapiMessage.LoadFromEml(stream).MapiMessage de vuelta al formato MIME con message.SaveToEml() o message.SaveToEml(stream)..eml y .msg en un formato único.Abra un archivo de Outlook MSG desde una corriente y imprime el tema — 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);
Construye un correo electrónico completo con el remitente, recipiente y anexo, luego escriba 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);
Cargue un archivo estándar .eml y guardarlo como un arquivo de Outlook .msg utilizando el parser MIME integrado.
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);