Skip to content

Spring web application for Email Service with clean architecture with Simple Java Mail and Mailtrap

Notifications You must be signed in to change notification settings

Brendon3578/spring-email-service-clean-architecture

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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 <johndoe@email.com>",
	"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

About

Spring web application for Email Service with clean architecture with Simple Java Mail and Mailtrap

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages