O envio de e-mails em aplicações é uma funcionalidade comum e crucial em muitos tipos de projetos. Seja para enviar um simples e-mail de boas-vindas, um alerta de sistema ou uma notificação de evento, a escolha da ferramenta para lidar com esse processo pode impactar significativamente a legibilidade e manutenção do código. O FluentEmail é uma biblioteca que visa facilitar o envio de e-mails com uma sintaxe fluente, moderna e altamente configurável em projetos .NET.
Neste artigo, vamos explorar o que é o FluentEmail, como configurá-lo, utilizá-lo com templates e integrações, e discutir boas práticas para seu uso em diferentes cenários de projetos.
Para começar a usar o FluentEmail em seu projeto .NET, você precisa instalar alguns pacotes NuGet. Abra o Package Manager Console no Visual Studio ou use a linha de comando do .NET CLI para instalar os pacotes necessários:
dotnet add package FluentEmail.Core
dotnet add package FluentEmail.Smtp
Esses pacotes incluem o núcleo da biblioteca, suporte ao envio via SMTP. Se você for utilizar outro serviço de envio, como SendGrid ou Mailgun, será necessário instalar os pacotes adicionais correspondentes. Em nosso exemplo, vamos usar o SendGrid:
dotnet add package FluentEmail.SendGrid
Com esses pacotes instalados, podemos configurar o FluentEmail no projeto.
Uma vez que os pacotes estão instalados, é hora de configurar o FluentEmail. No ASP.NET Core, podemos usar a Dependency Injection para configurar e utilizar o FluentEmail em nossos serviços.
No arquivo “Program.cs”, adicione a configuração do FluentEmail da seguinte maneira:
builder.Services
.AddFluentEmail("usuario@dominio.com")
.AddSmtpSender(
"smtp.mailersend.net",
2525,
"usuario@dominio.com",
"sua_chave_de_api_aqui"
);
Aqui, usamos o método “AddFluentEmail” para adicionar o serviço FluentEmail ao container de dependências do ASP.NET Core. Este método define o endereço de e-mail do remetente que será usado em todos os e-mails enviados pela aplicação.
Após configurar o remetente, adicionamos o método “AddSmtpSender”, que é responsável por definir as configurações de envio de e-mails via SMTP. Esse método configura o servidor que o FluentEmail utilizará para enviar as mensagens.
“smtp.mailersend.net”: O servidor SMTP usado para enviar os e-mails. O MailerSend fornece esse endereço para permitir a comunicação com o servidor de e-mail.
2525: A porta utilizada para a comunicação SMTP. A porta 2525 é escolhida por ser uma alternativa à porta padrão 25, que pode ser bloqueada.
“usuario@dominio.com”: O nome de usuário para autenticação no servidor SMTP, geralmente um e-mail ou subdomínio associado à sua conta.
“sua_chave_de_api”: A senha ou chave de API usada para autenticação. Para encontrar as configurações basta acessar a área de e-mails, clicar em domínios, acessar ou criar o domínio desejado e selecionar a opção de SMPT. As configurações aparecerão para você da seguinte forma.
Agora vamos implementar o código de envio:
[ApiController]
[Route("[controller]")]
public class EmailNotificationController : ControllerBase
{
private readonly IFluentEmail _fluentEmail;
public EmailNotificationController(IFluentEmail fluentEmail)
{
_fluentEmail = fluentEmail;
}
public async Task SendNotificationEmail(string email, string subject, string message)
{
await _fluentEmail
.To(email)
.Subject(subject)
.Body(message)
.SendAsync();
return Ok();
}
}
Neste código, recebemos os parâmetros do e-mail diretamente no endpoint: o destinatário do e-mail é passado para o campo “To”, o “subject” define o assunto da mensagem e o “body” contém o corpo do e-mail. Por fim, o método “SendAsync” é chamado para enviar a mensagem de forma assíncrona. Dessa forma, garantimos que o envio seja realizado sem bloquear a execução da aplicação.
Aqui estão algumas boas práticas a serem seguidas ao usar o FluentEmail para enviar e-mails em projetos .NET:
Assincronia: sempre utilize “SendAsync()” para enviar e-mails de forma assíncrona e evitar bloquear o fluxo da aplicação.
Manutenção do Código: organize a configuração de e-mails e o envio de mensagens em um serviço separado (como o “EmailService”), seguindo o princípio da separação de responsabilidades.
Segurança: nunca armazene diretamente informações sensíveis, como credenciais SMTP ou chave de API do SendGrid, no código. Use o “appsettings.json” ou variáveis de ambiente para armazenar essas informações de maneira segura. Em nosso exemplo, utilizamos as informações diretamente no código apenas para fins didáticos.
Se você é Desenvolvedor .NET Júnior e quer acelerar sua carreira até nível Pleno com salário de R$7k+, ou mesmo busca a primeira vaga, conheça a Mentoria .NET Start: Clique aqui
Se é Desenvolvedor .NET Pleno ou Sênior e quer virar referência técnica em sua equipe e mercado, com salário de R$10k+, conheça a Mentoria .NET Expert: Clique aqui
Neste artigo, abordamos como integrar o envio de e-mails em aplicações .NET utilizando a biblioteca FluentEmail. A solução proposta facilita a configuração do envio de mensagens de forma fluente e assíncrona, otimizando o processo e garantindo maior clareza no código. A flexibilidade oferecida pela integração com Dependency Injection e o suporte a servidores SMTP tornam o FluentEmail uma excelente escolha para quem busca uma forma prática e eficiente de enviar e-mails, sem a complexidade dos métodos tradicionais. Essa abordagem permite enviar notificações e outras mensagens de forma simples e escalável em projetos .NET.