Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/brendon3578/spring-email-service-clean-architecture
Spring web application for Email Service with clean architecture with Simple Java Mail and Mailtrap
https://github.com/brendon3578/spring-email-service-clean-architecture
Last synced: about 2 months ago
JSON representation
Spring web application for Email Service with clean architecture with Simple Java Mail and Mailtrap
- Host: GitHub
- URL: https://github.com/brendon3578/spring-email-service-clean-architecture
- Owner: Brendon3578
- Created: 2023-11-08T04:10:54.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2023-11-08T04:14:13.000Z (about 1 year ago)
- Last Synced: 2023-11-08T08:49:11.770Z (about 1 year ago)
- Language: Java
- Size: 66.4 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Spring Email Service With Clean Architecture š©
![Java](https://img.shields.io/badge/java-%23ED8B00.svg?style=for-the-badge&logo=openjdk&logoColor=white)
![Spring](https://img.shields.io/badge/spring-%236DB33F.svg?style=for-the-badge&logo=spring&logoColor=white)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](https://www.simplejavamail.org/) 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](src/main/java/com/brendongomes/emailservice/infrastructure/simplejavamail/SimpleJavaMailSender.java) 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**:
```json
{
"to": "Email para quem serĆ” enviado ",
"subject": "Nome do assunto",
"body": "Mensagem (body) da aplicaĆ§Ć£o que pode ser um arquivo HTML
"
}
```Para testar Ʃ necessƔrio criar uma conta no e com as configuraƧƵes do mailtrap, definir as seguintes configuraƧƵes no arquivo `application.properties` localizado em `/src/main/resources`
```properties
mailtrap.username=usernameDefinidoNoMailtrap
mailtrap.password=passwordDefinidoNoMailtrap
```---
> ObservaĆ§Ć£o: essa aplicaĆ§Ć£o foi desenvolvida seguindo o [VĆdeo da Fernanda Kipper](https://www.youtube.com/watch?v=eFgeO9M9lLw&t=462s&ab_channel=FernandaKipper%7CDev) 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