Introdução
Aspose.Email FOSS for .NET é uma biblioteca C# gratuita e de código aberto que permite trabalhar com Outlook
arquivos MSG, contêineres Compound File Binary (CFB) e mensagens EML diretamente no seu .NET
aplicação — sem Microsoft Outlook, sem interop COM e sem bibliotecas nativas necessárias. Distribua
como um único pacote NuGet e ele roda identicamente no Windows, Linux, macOS, contêineres Docker,
e funções serverless.
A biblioteca resolve um problema recorrente em trabalhos corporativos e de integração: arquivos Outlook .msg são produzidos por milhões de usuários empresariais, mas analisá‑los sem o Outlook historicamente exigia automação COM ou bibliotecas comerciais caras. Aspose.Email FOSS for .NET fornece suporte total de leitura/gravação para MSG, o contêiner binário CFB subjacente e o formato EML/MIME — tudo sob a licença MIT sem restrições de uso.
Seja você está construindo um pipeline de arquivamento de e‑mail, uma ferramenta de migração, um extrator de anexos,
ou um gerador automatizado de MSG, esta biblioteca oferece acesso direto e de baixo nível a cada byte do
formato de e‑mail, juntamente com uma API de alto nível MapiMessage que permite começar em minutos.
Principais recursos
Ler arquivos MSG do Outlook
Abra qualquer arquivo .msg a partir de um caminho ou fluxo com MsgReader.FromFile() ou MsgReader.FromStream().
Acesse o fluxo completo de propriedades MAPI, registros de destinatários e subarmazenamentos de anexos no
nível de byte bruto via MsgStorage e 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);
Criar arquivos MSG do zero
Construa um e‑mail completo programaticamente usando MapiMessage.Create(). Defina o assunto, plain-text
body, HTML body, nome do remetente, endereço de e‑mail do remetente, horário de entrega e internet message ID, então
adicione destinatários com AddRecipient() e anexos com AddAttachment(). Serialize commessage.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);
Converter EML para MSG (e Voltar)
Carregue um arquivo padrão RFC 5322 .eml em um MapiMessage com MapiMessage.LoadFromEml(),
em seguida, salve‑o como um arquivo Outlook .msg — ou reverta o processo com MapiMessage.SaveToEml().
O analisador MIME interno preserva assunto, corpo, corpo HTML, remetente, destinatários e anexos
durante viagens completas de ida e volta 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);
Acesso de Baixo Nível ao Contêiner CFB
Os arquivos Outlook MSG são construídos no formato Compound File Binary (CFB) — um contêiner binário hierárquico semelhante a um sistema de arquivos. CfbReader expõe a árvore de diretórios completa: itere armazenamentos e fluxos com IterStorages(), IterStreams() e IterChildren(), navegue até entradas específicas por caminho com ResolvePath() e leia bytes brutos do fluxo com GetStreamData().
CfbWriter permite que você construa e serialize um documento CFB do zero. Crie um CfbDocument,
anexe os nós CfbStorage e CfbStream, e chame CfbWriter.ToBytes() ou
CfbWriter.WriteFile() para serializar.
Acesso a Propriedades MAPI e Anexos
A classe MapiPropertyCollection fornece acesso tipado a propriedades MAPI para qualquer objeto MSG ou de armazenamento: use Get(), Set(), Add() e Remove() com valores de enum padrão CommonMessagePropertyId ou PropertyTypeCode. Acesse metadados de anexos e dados binários via propriedades MapiAttachment: Filename, MimeType, ContentId e Data.
Início rápido
Instale o pacote:
dotnet add package Aspose.Email.Foss
Ler o assunto de um arquivo 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 suportados
| Formato | Extensão | Ler | Gravar |
|---|---|---|---|
| Arquivo Binário Composto | .cfb | ✓ | ✓ |
| Mensagem Outlook | .msg | ✓ | ✓ |
| MIME / EML | .eml | ✓ | ✓ |
Código Aberto e Licenciamento
Aspose.Email FOSS for .NET é lançado sob a licença MIT. Você pode usá‑lo livremente em projetos pessoais, comerciais e de código aberto, sem restrições de uso. O código‑fonte está disponível em
github.com/aspose-email-foss/Aspose.Email-FOSS-for-.Net.