MailKit para C# (.NET): guía completa con ejemplos prácticos
1. ¿Qué es y por qué usarla?
MailKit es una potente librería de código abierto y multiplataforma para trabajar con correo electrónico en el ecosistema .NET. Proporciona un conjunto completo de herramientas para crear, enviar, recibir y procesar mensajes de email. A diferencia de la obsoleta System.Net.Mail, MailKit ofrece una API moderna, soporte completo de MIME (Multipurpose Internet Mail Extensions), compatibilidad con S/MIME y OpenPGP, así como operaciones asíncronas, algo fundamental para aplicaciones de alto rendimiento.
¿Para qué sirve MailKit? Si desarrollas en C# y necesitas enviar correos con adjuntos, analizar mensajes entrantes, trabajar con diferentes protocolos de correo (SMTP, POP3, IMAP) o procesar formatos complejos (HTML, adjuntos, firmas digitales), MailKit se convertirá en tu herramienta indispensable. Es utilizada en entornos de producción por miles de empresas, incluyendo Microsoft (en algunos servicios internos), y es compatible con .NET Framework, .NET Core, .NET 5+ e incluso Xamarin/MAUI.
Ventajas clave de MailKit frente a alternativas: soporte completo de los estándares de email más recientes (RFC 2045-2049, RFC 2822, RFC 5322), compatibilidad integrada con SSL/TLS, soporte para proxies, procesamiento por flujo de adjuntos grandes y alto rendimiento gracias al uso de System.IO.Pipelines y async/await.
2. Instalación
MailKit se instala a través del administrador de paquetes NuGet. Ejecuta uno de los siguientes comandos en la consola del administrador de paquetes (Package Manager Console) o en la terminal de .NET CLI:
// Mediante .NET CLI
dotnet add package MailKit
// Mediante Package Manager Console
Install-Package MailKit
// O a través del Administrador de Paquetes NuGet en Visual Studio
// Busca "MailKit" e instala la última versión estable
Después de la instalación, se agregará al proyecto una dependencia de MimeKit (librería base para trabajar con mensajes MIME), que se instala automáticamente como dependencia transitiva.
3. Inicio rápido — ejemplo mínimo funcional
A continuación se muestra un ejemplo mínimo para enviar un correo de texto simple a través del servidor SMTP de Gmail. Nota: para usar Gmail, necesitas una contraseña de aplicación (App Password) o autenticación OAuth 2.0.
using MailKit.Net.Smtp;
using MimeKit;
// Creamos el mensaje
var message = new MimeMessage();
message.From.Add(new MailboxAddress("Remitente", "sender@gmail.com"));
message.To.Add(new MailboxAddress("Destinatario", "recipient@example.com"));
message.Subject = "Correo de prueba desde MailKit";
message.Body = new TextPart("plain") { Text = "¡Hola! Este es un mensaje de prueba." };
// Enviamos a través de SMTP
using (var client = new SmtpClient())
{
client.Connect("smtp.gmail.com", 587, SecureSocketOptions.StartTls);
client.Authenticate("sender@gmail.com", "tu-contraseña-de-aplicacion");
client.Send(message);
client.Disconnect(true);
}
Console.WriteLine("¡Correo enviado!");
4. Métodos/funciones/clases principales
4.1. SmtpClient.Connect()
Firma: Task ConnectAsync(string host, int port, SecureSocketOptions options, CancellationToken cancellationToken = default)
Qué hace: Establece una conexión con el servidor SMTP. El parámetro SecureSocketOptions define el tipo de cifrado: None, Auto, SslOnConnect, StartTls.
using var client = new SmtpClient();
await client.ConnectAsync("smtp.mail.ru", 465, SecureSocketOptions.SslOnConnect);
4.2. SmtpClient.Authenticate()
Firma: Task AuthenticateAsync(string userName, string password, CancellationToken cancellationToken = default)