API de Envio de Emails com SMTP, JavaMail e Web Integrados
Uma API robusta e escalável para envio e gerenciamento de emails, combinando o poder do JavaMail, simplicidade do SMTP, ambiente de testes com Mailtrap e endpoints web para integração perfeita em aplicações modernas.
✅ Envio de Emails via SMTP
- Suporte a texto simples, HTML, anexos e templates dinâmicos.
- Configuração flexível para provedores (Gmail, Outlook, Amazon SES) ou serviços locais.
✅ Testes com Mailtrap
- Ambiente sandbox integrado para capturar emails em desenvolvimento.
✅ API Web RESTful
- Endpoints documentados com Swagger/OpenAPI.
- Logs detalhados de transações (sucessos/falhas).
✅ Integração JavaMail Simplificada
- Abstraction layer para evitar complexidades do
javax.mail. - Retry automático em falhas de conexão.
- Backend: Java 17+, Spring Boot 3.x
- Email: JavaMail API
- Testes: Mailtrap, JUnit 5, Mockito
- Web: REST, Swagger
- Outras: Docker, Maven, Lombok
git clone git@github.com:JhonSantt4na/mail-flow-api.git
cd mail-flow-apiCrie um .env na raiz do projeto (Ou renomeia o .env.example para .env):
MAIL_HOST=sandbox.smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=seu_username
MAIL_PASSWORD=sua_senha
MAIL_FROM=noreply@mailflow.dev| Variável | Exemplo | Obrigatório |
|---|---|---|
| MAIL_FROM | noreply@mailflow.dev | Sim |
| SPRING_MAIL_PASSWORD | sua-senha-secreta | Sim |
| SPRING_MAIL_HOST | smtp.dominio.com | Sim |
| SPRING_MAIL_PORT | 587 | Sim |
docker-compose up --buildA API estará em http://localhost:8080.
_Verificar funcionamento:
curl http://localhost:8080/actuator/health
curl -X POST http://localhost:8080/api/sendEmail \
-H "Content-Type: application/json" \
-d '{
"emailTarget": "destino@exemplo.com",
"title": "Assunto Simples",
"message": "Conteúdo texto puro",
"name": "Remetente"
}'curl -X POST http://localhost:8080/api/sendHtml \
-H "Content-Type: application/json" \
-d '{
"emailTarget": "destino@exemplo.com",
"title": "Assunto HTML",
"message": "<h1>Título</h1><p>Conteúdo <strong>HTML</strong></p>",
"name": "Remetente"
}'curl -X POST http://localhost:8080/api/sendEmailAnexo \
-H "Content-Type: multipart/form-data" \
-F "emailDto='{
\"emailTarget\": \"destino@exemplo.com\",
\"title\": \"Assunto com Anexo\",
\"message\": \"Veja o arquivo em anexo\",
\"name\": \"Remetente\"
}';type=application/json" \
-F "anexo=@/caminho/do/arquivo.pdf"