Aspose.Email FOSS para .NET é uma biblioteca C# licenciada sob MIT, sem dependências, para trabalhar com arquivos .msg do Microsoft Outlook, contêineres Compound File Binary (CFB) e mensagens EML. Adicione um único pacote NuGet e comece imediatamente a ler, criar e processar mensagens de e‑mail sem instalar o Microsoft Outlook ou qualquer runtime proprietário.
A biblioteca fornece dois níveis de acesso. No nível baixo, CfbReader e CfbWriter dão controle total sobre contêineres binários CFB — percorrer entradas de diretório, ler e gravar nós de armazenamento e dados de fluxo, e inspecionar o layout bruto dos setores. MsgReader e MsgWriter lidam com o formato MSG sobre CFB, expondo fluxos de propriedades MAPI, tabelas de destinatários e subarmazenamentos de anexos. No nível alto, MapiMessage permite criar novas mensagens do zero, ler assunto, corpo, remetente e destinatários, gerenciar anexos e converter entre os formatos MSG e EML via uma implementação MIME incorporada.
A biblioteca tem como alvo .NET 8.0 ou posterior e não possui dependências nativas, tornando-a adequada para Windows, Linux, macOS, contêineres Docker e funções sem servidor. Para recursos adicionais e suporte comercial, veja Aspose.Email for .NET.
CfbReader.FromFile(), CfbReader.FromStream() ou new CfbReader(data).IterStorages(), IterStreams(), IterChildren() e IterTree().ResolvePath(names) para localizar um fluxo específico por cadeia de nomes.CfbDocument e serialize para bytes ou arquivo via CfbWriter.ToBytes() ou CfbWriter.WriteFile().CfbStorage e CfbStream a qualquer nó de armazenamento antes da serialização..msg do Outlook — o acesso direto ao CFB permite inspeção forense e reparo.MsgReader.FromFile() ou MsgReader.FromStream() e acesse os fluxos de propriedades MAPI subjacentes, os registros de destinatários e os subarmazenamentos de anexos.MsgDocument com MsgWriter.ToBytes() ou MsgWriter.WriteFile().MsgStorage, MsgStream e MsgStorage.FindStream().MsgStorage.FindStream() e MsgStorage.FindStorage() para localizar subentradas nomeadas..msg de diretórios de arquivo e extração de metadados ou anexos..msg programaticamente e entregá‑los aos sistemas de e‑mail baseados no Outlook.MapiMessage.Create(subject, body), defina SenderName, SenderEmailAddress e HtmlBody.To, Cc e Bcc destinatários via AddRecipient() com endereço de e‑mail e nome de exibição.AddAttachment() ou construa objetos MapiAttachment diretamente com Filename, MimeType, ContentId e Data.message.Save() ou message.Save(stream) e recarregar com MapiMessage.FromFile() ou MapiMessage.FromStream().message.Attachments e salve cada attachment.Data no disco.message.Subject, message.Body, message.SenderEmailAddress e message.Recipients sem automação COM..eml padrão (RFC 5322 / MIME) em um objeto MapiMessage completo via MapiMessage.LoadFromEml(stream).MapiMessage de volta ao formato MIME com message.SaveToEml() ou message.SaveToEml(stream)..eml e .msg para um único formato..eml nos testes e verifique se eles sobrevivem à ida e volta de MSG sem perda de dados.Abra um arquivo Outlook MSG a partir de um stream e imprima o assunto — sem necessidade do 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);
Crie um e‑mail completo com remetente, destinatário e anexo, e então grave‑o em um arquivo 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);
Carregue um arquivo .eml padrão e salve‑o como um arquivo .msg do Outlook usando o analisador 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);