MailKit para C# (.NET): guia completo com exemplos práticos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

MailKit para C# (.NET): guia completo com exemplos práticos

1. O que é e para que serve

MailKit é uma biblioteca poderosa, multiplataforma e de código aberto para trabalhar com e-mails no ecossistema .NET. Ela oferece um conjunto completo de ferramentas para criar, enviar, receber e processar mensagens de e-mail. Diferente da obsoleta System.Net.Mail, o MailKit fornece uma API moderna, suporte total a MIME (Multipurpose Internet Mail Extensions), compatibilidade com S/MIME e OpenPGP, além de operações assíncronas — essenciais para aplicações de alta performance.

Para que serve o MailKit? Se você desenvolve em C# e precisa enviar e-mails com anexos, analisar mensagens recebidas, trabalhar com diferentes protocolos de e-mail (SMTP, POP3, IMAP) ou lidar com formatos complexos (HTML, anexos, assinaturas digitais), o MailKit é a ferramenta ideal. Ele é usado em produção por milhares de empresas, incluindo a Microsoft (em alguns serviços internos), e suporta .NET Framework, .NET Core, .NET 5+ e até Xamarin/MAUI.

Principais vantagens do MailKit em relação a alternativas: suporte completo aos padrões mais recentes de e-mail (RFC 2045-2049, RFC 2822, RFC 5322), suporte nativo a SSL/TLS, funcionamento com proxies, processamento em stream de anexos grandes e alta performance graças ao uso de System.IO.Pipelines e async/await.

2. Instalação

O MailKit é instalado através do gerenciador de pacotes NuGet. Execute um dos seguintes comandos no Console do Gerenciador de Pacotes (Package Manager Console) ou no terminal do .NET CLI:

// Via .NET CLI
dotnet add package MailKit

// Via Package Manager Console
Install-Package MailKit

// Ou via NuGet Package Manager no Visual Studio
// Procure por "MailKit" e instale a versão estável mais recente

Após a instalação, o projeto terá uma dependência do MimeKit (biblioteca base para trabalhar com mensagens MIME) — ela é instalada automaticamente como dependência transitiva.

3. Início rápido — exemplo mínimo funcional

Abaixo está um exemplo mínimo para enviar um e-mail de texto simples através do servidor SMTP do Gmail. Atenção: para usar o Gmail, é necessário utilizar uma senha de aplicativo (App Password) ou OAuth 2.0.

using MailKit.Net.Smtp;
using MimeKit;

// Criando a mensagem
var message = new MimeMessage();
message.From.Add(new MailboxAddress("Remetente", "sender@gmail.com"));
message.To.Add(new MailboxAddress("Destinatário", "recipient@example.com"));
message.Subject = "E-mail de teste com MailKit";
message.Body = new TextPart("plain") { Text = "Olá! Esta é uma mensagem de teste." };

// Enviando via SMTP
using (var client = new SmtpClient())
{
    client.Connect("smtp.gmail.com", 587, SecureSocketOptions.StartTls);
    client.Authenticate("sender@gmail.com", "sua-senha-de-app");
    client.Send(message);
    client.Disconnect(true);
}

Console.WriteLine("E-mail enviado com sucesso!");

4. Principais métodos/funções/classes

4.1. SmtpClient.Connect()

Assinatura: Task ConnectAsync(string host, int port, SecureSocketOptions options, CancellationToken cancellationToken = default)

O que faz: Estabelece uma conexão com o servidor SMTP. O parâmetro SecureSocketOptions define o tipo de criptografia: None, Auto, SslOnConnect, StartTls.

using var client = new SmtpClient();
await client.ConnectAsync("smtp.mail.ru", 465, SecureSocketOptions.SslOnConnect);

4.2. SmtpClient.Authenticate()

Assinatura: Task AuthenticateAsync(string userName, string password, CancellationToken cancellationToken =

Recommendations