Skip to main content

Envio de e-mail com .NET

  • Envio de e-mail com .NET

Veja neste post rápido como criar um fluxo de envio de e-mail em 5 minutos utilizando a biblioteca FluentEmail do .NET

Imagem 1

Envio de e-mail com .NET 7

Dando continuidade a minha serie de artigos com o tema dica rápida, hoje demonstrarei como criar um fluxo de envio de e-mail utilizando a biblioteca FluentEmail.Core.

Link do Github da biblioteca: https://github.com/lukencode/FluentEmail

Como esse é um artigo com o intuito de ser algo rápido e prático, eu pularei a parte de criação de um novo projeto, partindo do ponto que você já tem um criado.

Caso tenha interesse em clonar o projeto desenvolvido para este post, segue o seu link no meu Github:

Bom, o nosso primeiro passo será importar as bibliotecas “FluentEmail.Core” e “FluentEmail.Smtp” para o nosso projeto.

Para fazer isso, você pode utilizar o seguinte comando no terminal do seu projeto:

dotnet add package FluentEmail.Core
dotnet add package FluentEmail.Smtp

Com a etapa das bibliotecas OK, adicione o seguinte trecho de código no seu arquivo Program.cs.

#region [DI]
builder.Services
.AddFluentEmail("seu_gmail@gmail.com")
.AddSmtpSender("smtp.gmail.com", 587);
#endregion

Obs.: Acima estão os dados básicos de SMTP, para utilizar você precisa do seu e-mail de login e senha para que ele funcione.

Agora que a biblioteca está importada e já foi injetada no seu projeto, vamos criar um serviço de envio de e-mail.

Crie um novo diretório no seu projeto chamado Infra e dentro dele um outro diretório chamado Mail com um arquivo chamado MailService.cs.

Em seguida atualize este arquivo com o seguinte trecho de código:

  public class MailService
{
private readonly IFluentEmail _fluentEmail;
public MailService(IFluentEmail fluentEmail) => _fluentEmail = fluentEmail;
public async Task SendMail(string to, string message) => await _fluentEmail.To(to).Body(message).SendAsync();

}

Agora registre ele no seu arquivo program.cs:

builder.Services.AddTransient<MailService>();

Com essa etapa básica OK, vamos criar um VM para que possamos receber os dados de quem vai receber o nosso e-mail l e a mensagem e atualizar a nossa controller.

Crie um novo diretório chamado Model e dentro dele um arquivo chamado MailViewMode.cs, em seguida atualize este arquivo com o seguinte trecho de código:

public class MailViewModel
{
public string To { get; set; }
public string Message { get; set; }
}

E atualize a sua controller injetando o nosso MailService.

namespace dotnet_sendmail.Controllers;

[ApiController]
[Route("[controller]")]
public class SendMailController : ControllerBase
{

private readonly MailService _mailService;
public SendMailController(MailService mailService) => _mailService = mailService;

[HttpPost]
public async Task<IActionResult> Post([FromBody] MailViewModel mailViewModel)
{
try
{
await _mailService.SendMail(mailViewModel.To, mailViewModel.Message);
return Ok("Email enviado com sucesso");
}
catch (Exception ex)
{
return Ok($"Erro ao tentar enviar o e-mail {ex.Message}");
}
}
}

Bom, para testar você pode executar o seu projeto e validar os passos anteriores via Swagger :)

A seguir você tem uma imagem demonstrando o envio funcionando correntamente e uma outra com o e-mail chegando na minha caixa de entrada de e-mails:

Imagem 2

Envio de e-mail com .NET

Imagem 3

Email na caixa