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 =
Também na biblioteca
Tokens JWT em PHP: Guia Completo para Autenticação e Autorização
Envio de email em C# (.NET) usando SmtpClient e MailKit
Parsing de HTML em PHP: DOMDocument, SimpleXML e cURL para Web Scraping
Geração de PDF em C++: bibliotecas, ferramentas e exemplos de código