Skip to content

Latest commit

 

History

History
51 lines (38 loc) · 3.45 KB

File metadata and controls

51 lines (38 loc) · 3.45 KB

Spring Email Service With Clean Architecture 📩

Java Spring

Esse projeto foi feito para ser um back-end de uma API RESTful de um serviço de envios de e-mails por meio do protocolo SMTP utilizando o Spring Boot. Ele recebe o envio do e-mail através da API e envia para um serviço externo de envio de gerenciamento de e-mails SMTP, para que então seja enviado e-mail para o destinário final.

💻 Arquitetura da aplicação

A aplicação foi desenvolvida seguindo os princípios do Clean Architecture

  • /controllers/ - Camada de Controllers da aplicação RESTful
    • Classe EmailSenderController - É o controller RESTful da aplicação Spring
  • /infrastrucutre - É o provedor do serviço de e-mail externo, implementação do serviço da biblioteca Simple Java Mail para o envio de e-mails
    • Classe SimpleJavaMailConfig - Guarda o objeto Mailer, é um Bean de configuração do Simple Java Mail, instanciado automaticamente pelo Spring
    • Classe SimpleJavaMailSender - Disponibiliza um Service com o propósito de ser um Gateway usado na aplicação, sendo a regra de negócio para o envio de e-mails
  • /core/ - Diretório que guarda os Casos de Usos e regras de negócio da aplicação
    • Interface EmailSenderUseCase - é uma interface (contrato) de regra de negócio do serviço de envio e-mail (alto nível da aplicação), sendo também agnóstica (não depende) em relação aos outros componentes da aplicação
    • Record EmailRequest - É o DTO utilizado no Body da requisição do Controller principal
  • /application/ - É a camada intermediaria que dialoga com os casos de usos e os serviços externos (que estão no pacote infrastructure)
    • Arquivo EmailSenderService - é o serviço em si que é utilizado no controller
  • /adapters/ - Disponibiliza interfaces que adaptam o mundo exterior (APIs externas como a classe SimpleJavaMailSender para a aplicação, com o
    • Interface EmailSenderGateway - Define a interface (contrato) que todas as APIs externas de envio de e-mails devem implementar

🔥 Testando aplicação

O endpoint da aplicação está em http://localhost:8080/api/email e recebe o método POST contendo o seguinte body em arquivo json:

{
	"to": "Email para quem será enviado <[email protected]>",
	"subject": "Nome do assunto",
	"body": "<p>Mensagem (body) da aplicação que pode ser um arquivo HTML</p>"
}

Para testar é necessário criar uma conta no https://mailtrap.io e com as configurações do mailtrap, definir as seguintes configurações no arquivo application.properties localizado em /src/main/resources

mailtrap.username=usernameDefinidoNoMailtrap
mailtrap.password=passwordDefinidoNoMailtrap

Observação: essa aplicação foi desenvolvida seguindo o Vídeo da Fernanda Kipper mas com a utilização do serviço de e-mail Mailtrap.io, com a utilização da biblioteca Simple Java Mail

Feito com ☕ por Brendon Gomes