📧 Guia Rápido de MailKit
MailKit é uma biblioteca moderna, multiplataforma e de código aberto para .NET.
Ela substitui o antigo SmtpClient, permitindo enviar e-mails de forma segura, confiável e flexível.
Você pode usar MailKit para enviar notificações, newsletters, confirmações de cadastro e muito mais.
⚙️ Instalação
Instale o pacote MailKit usando NuGet ou .NET CLI:
# Usando NuGet Package Manager
Install-Package MailKit
# Ou usando .NET CLI
dotnet add package MailKit
🔧 Configurações SMTP
Estas configurações definem como o seu aplicativo se conectará ao servidor de e-mail de forma segura.
using MailKit.Security;
public class SmtpSettings
{
public string Host { get; set; } = string.Empty;
public int Port { get; set; } = 587;
public string UserName { get; set; } = string.Empty;
public string Password { get; set; } = string.Empty;
public SecureSocketOptions SecureSocket { get; set; } = SecureSocketOptions.StartTls;
}
📨 Serviço de envio de e-mails
O serviço EmailSender encapsula toda a lógica de criação e envio de mensagens.
using MailKit.Net.Smtp;
using MimeKit;
using MimeKit.Text;
using System;
using System.Threading.Tasks;
public class EmailSender
{
private readonly SmtpSettings _settings;
public EmailSender(SmtpSettings settings)
{
_settings = settings ?? throw new ArgumentNullException(nameof(settings));
}
public async Task<bool> SendEmailAsync(string fromName, string fromEmail, string toEmail,
string subject, string bodyHtml, string? bodyText = null)
{
var message = new MimeMessage();
message.From.Add(new MailboxAddress(fromName, fromEmail));
message.To.Add(MailboxAddress.Parse(toEmail));
message.Subject = subject;
var builder = new BodyBuilder
{
HtmlBody = bodyHtml,
TextBody = bodyText ?? MimeUtils.HtmlToText(bodyHtml)
};
message.Body = builder.ToMessageBody();
using var smtp = new SmtpClient();
try
{
await smtp.ConnectAsync(_settings.Host, _settings.Port, _settings.SecureSocket)
.ConfigureAwait(false);
if (!string.IsNullOrWhiteSpace(_settings.UserName))
await smtp.AuthenticateAsync(_settings.UserName, _settings.Password)
.ConfigureAwait(false);
await smtp.SendAsync(message).ConfigureAwait(false);
Console.WriteLine($"✅ E-mail enviado para {toEmail}");
return true;
}
catch (Exception ex)
{
Console.Error.WriteLine($"Erro ao enviar e-mail: {ex.Message}");
return false;
}
finally
{
await smtp.DisconnectAsync(true).ConfigureAwait(false);
}
}
}
🧪 Exemplo de uso
var smtpConfig = new SmtpSettings
{
Host = "smtp.seuprovedor.com",
Port = 587,
UserName = "usuario@exemplo.com",
Password = Environment.GetEnvironmentVariable("SMTP_PASSWORD") ?? "senha-temporaria",
SecureSocket = SecureSocketOptions.StartTls
};
var emailSender = new EmailSender(smtpConfig);
await emailSender.SendEmailAsync(
fromName: "Seu Nome",
fromEmail: "usuario@exemplo.com",
toEmail: "destinatario@exemplo.com",
subject: "Teste de envio com MailKit",
bodyHtml: "<h1>Olá!</h1><p>Este é um teste de e-mail <b>com HTML</b>.</p>"
);
✅ Boas práticas
- Nunca exponha senhas diretamente no código. Use variáveis de ambiente ou um serviço de gerenciamento de segredos.
- Sempre trate exceções para evitar falhas silenciosas.
- Prefira enviar e-mails em HTML com texto alternativo para compatibilidade.
- Para enviar múltiplos e-mails, conecte-se uma vez e use
SendAsyncem loop antes de desconectar. - Integre logging estruturado (ex.: Serilog) para monitorar falhas.
📌 Resumo Executivo – MailKit
MailKit é uma biblioteca de envio de e-mails moderna, segura e escalável, que substitui o antigo SmtpClient e é ideal para empresas que precisam automatizar comunicações.
Principais vantagens
- Produtividade ⚡ – Integração simples, envio rápido de e-mails e redução de retrabalho.
- Segurança e tecnologia 🔧 – Suporte a TLS, autenticação robusta, fallback de HTML/texto e compatibilidade com diferentes clientes de e-mail.
- Qualidade e confiabilidade ✅ – Mensagens consistentes, código modular, tratamento de exceções estruturado e integração com logs/monitoramento.
- Flexibilidade – Suporte a HTML, anexos e templates; controle avançado sobre protocolos SMTP, IMAP e POP3.
- Manutenção e suporte – Biblioteca open-source, multiplataforma e compatível com .NET Core e .NET 6+.
🎯 Conclusão
📌 MailKit aumenta a eficiência da equipe, garante segurança e melhora a experiência do usuário final, tornando-se uma escolha estratégica e praticamente padrão no ecossistema .NET moderno.