Skip to content

Latest commit

 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📧 API Go Send Email

Go Version Docker License

API desenvolvida em Golang para envio de emails com:

  • ✅ Corpo do email em HTML (tags, links, imagens, etc.)
  • ✅ Suporte a anexos
  • ✅ Estrutura modular (config, handlers, middleware, models)
  • ✅ Fácil deploy com Docker
  • ✅ Configuração via variáveis de ambiente (.env)

📂 Estrutura do Projeto

api-go-send-email/
│── config/        # Configurações (carregamento de env, smtp, etc.)
│── database/      # (Opcional) Persistência de dados ou logs
│── handlers/      # Handlers HTTP com as rotas
│── middleware/    # Middlewares (ex: autenticação, logs, CORS)
│── models/        # Definições de modelos (request/response)
│── .dockerignore  # Arquivos ignorados no build Docker
│── .env.example   # Exemplo de variáveis de ambiente
│── .gitignore     # Arquivos ignorados no Git
│── Dockerfile     # Containerização da aplicação
│── go.mod         # Gerenciamento de dependências
│── go.sum         # Checksum das dependências
│── main.go        # Ponto de entrada da aplicação

⚙️ Configuração

Variáveis de Ambiente

Crie um arquivo .env na raiz do projeto, baseado no .env.example:

SMTP_HOST=smtp.gmail.com
SMTP_PORT=465
SMTP_USER=<seu-email>
SMTP_PASS=<senha-email>

API_USERNAME=<usuário>
API_PASSWORD=<password>
API_KEY=<api-key-gerada>

DB_HOST=localhost
DB_PORT=5432
DB_USER=user
DB_PASSWORD=password
DB_NAME=tb_api_emails

REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD=sua-senha

▶️ Como Rodar

1. Localmente

# Clone o repositório
git clone https://github.com/marcosoleniuk/api-go-send-email.git
cd api-go-send-email

# Instale dependências
go mod tidy

# Execute a aplicação
go run main.go

A API ficará disponível em:

http://localhost:8080

2. Com Docker

# Build da imagem
docker build -t api-go-send-email .

# Rodar o container
docker run -d -p 8080:8080 --env-file .env api-go-send-email

📡 Endpoints Disponíveis

1. Enviar Email

POST /api/send-email

Request Body

{
    "sender": "[email-remetente]",
    "title": "API teste de envio de email",
    "contentBody": "teste enviando email<br>teste quebra de linha.",
    "nameAttachment": "",
    "attachment": ""
}
  • to → lista de destinatários
  • subject → assunto do email
  • body → corpo em HTML
  • attachments → lista de arquivos para anexar (opcional)

Resposta de Sucesso

{
    "status": true,
    "message": "E-mail enviado com sucesso"
}

Resposta de Erro

{
    "status": false,
    "message": "E-mail não enviado"
}

🧪 Testes com cURL / HTTPie

Enviar Email Simples

curl -X POST http://localhost:8080/send-email   -H "Content-Type: application/json"   -d '{
    "to": ["teste@dominio.com"],
    "subject": "API Go Send Email",
    "body": "<h2>Email enviado com sucesso 🚀</h2>"
  }'

Enviar com Anexo

curl -X POST http://localhost:8080/send-email   -H "Content-Type: application/json"   -d '{
    "to": ["teste@dominio.com"],
    "subject": "Relatório Anexo",
    "body": "<p>Segue o relatório em anexo.</p>",
    "attachments": ["uploads/relatorio.pdf"]
  }'

🛠 Tecnologias Utilizadas


🚀 Deploy

Pode ser feito em qualquer serviço que suporte Docker ou Go nativamente:

  • Docker Compose
  • Heroku
  • Render
  • Fly.io
  • AWS / GCP / Azure

Exemplo com Docker Compose:

version: "3.8"

services:
  api-email:
    build: .
    ports:
      - "8080:8080"
    env_file:
      - .env

📜 Licença

Este projeto está licenciado sob a MIT License.
Você pode usar, modificar e distribuir livremente.


👨‍💻 Autor

Desenvolvido por Marcos Oleniuk
📧 Entre em contato: marcos@moleniuk.com

About

API em golang para enviar emails com anexo e aceita corpo com tag HTML

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages