.NET

5 set, 2023

Envio de e-mail com .NET em 5 minutos

Publicidade

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:

Envio de e-mail com .NET
Email na caixa

Bom era isso que eu gostaria de demonstrar para vocês pessoal, espero que tenham gostado e até um próximo artigo.

*O conteúdo deste artigo é de responsabilidade do(a) autor(a) e não reflete necessariamente a opinião do iMasters.