Pular para o conteúdo principal

📧 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 SendAsync em 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.

📚 Recursos úteis

Publicidade