Projeto PHP com Slim Framework para envio de e-mails em massa via SendGrid, com upload de planilhas (CSV/Excel) e sistema de templates HTML responsivos.
- 📤 Envio de e-mails em massa via SendGrid
- 📊 Upload de planilhas (CSV, XLS, XLSX) com lista de contatos
- 🎨 Sistema de templates HTML responsivos
- ⚙️ Variáveis personalizáveis nos templates
- 🔄 Arquitetura modular para fácil troca de provedor de e-mail
- 🌐 Interface web amigável
composer installCopie o arquivo .env.example para .env e configure:
cp .env.example .envConfigure no arquivo .env:
SENDGRID_API_KEY=sua_chave_sendgrid_aqui
MAIL_FROM=noreply@suaempresa.com
MAIL_FROM_NAME=Sua Empresa
COMPANY_NAME=Sua Empresa
# ... outras configuraçõesphp -S localhost:8080 -t public- Acesse
http://localhost:8080 - Escolha um template de e-mail
- Digite o assunto e mensagem
- Faça upload da planilha com contatos (formato: Email, Nome)
- Configure variáveis personalizadas (opcional)
- Clique em "Enviar E-mails"
- Design moderno com cabeçalho colorido
- Botão de call-to-action
- Ideal para campanhas promocionais
Variáveis disponíveis:
message- Mensagem principalbutton_text- Texto do botãobutton_url- URL do botãocompany_name- Nome da empresa
- Design limpo e profissional
- Área de destaque
- Informações de contato no rodapé
Variáveis disponíveis:
message- Mensagem principalhighlight_message- Mensagem em destaqueadditional_info- Informações adicionaissender_name- Nome do remetente
- Design elegante com gradiente
- Links para redes sociais
- Visual contemporâneo
Variáveis disponíveis:
message- Mensagem principaltagline- Slogan da empresacall_to_action- Texto do botão principalcta_url- URL do botãosocial_facebook,social_instagram,social_linkedin- URLs das redes sociais
A planilha deve conter 2 colunas:
| Nome | |
|---|---|
| joao@email.com | João Silva |
| maria@email.com | Maria Santos |
Formatos suportados: .csv, .xls, .xlsx
Interface web principal
Envia e-mails em massa
Parâmetros:
file- Arquivo da planilha (obrigatório)template- Nome do template (padrão: promotional)subject- Assunto do e-mail (obrigatório)message- Mensagem principal (obrigatório)template_vars- JSON com variáveis personalizadas (opcional)
Lista templates disponíveis
Resposta:
{
"templates": {
"promotional": {
"name": "promotional",
"title": "Promocional"
}
}
}- PHP 8.3+
- Slim Framework 4 - Framework web
- SendGrid PHP SDK - Envio de e-mails
- PhpSpreadsheet - Leitura de planilhas Excel
- League CSV - Processamento de arquivos CSV
- Twig - Sistema de templates
├── public/
│ └── index.php # Ponto de entrada
├── src/
│ ├── Controllers/
│ │ ├── EmailController.php # Controle de envio
│ │ └── HomeController.php # Página inicial
│ └── Services/
│ ├── EmailService.php # Serviço de e-mail
│ └── TemplateService.php # Gerenciamento de templates
├── templates/
│ ├── promotional.html # Template promocional
│ ├── newsletter.html # Template newsletter
│ └── modern.html # Template moderno
├── views/
│ └── home.twig # Interface web
├── routes/
│ └── web.php # Definição de rotas
└── composer.json # Dependências
- Modificar
EmailService.php - Adicionar lógica para o novo provedor
- Configurar credenciais no
.env
- Criar arquivo HTML em
/templates/ - Usar sintaxe:
{{variavel}}para substituições - Usar
{{#if variavel}}...{{/if}}para condicionais
<!DOCTYPE html>
<html>
<head>
<title>{{subject}}</title>
</head>
<body>
<h1>Olá, {{name}}!</h1>
<p>{{message}}</p>
{{#if special_offer}}
<div class="offer">
<h2>Oferta Especial!</h2>
<p>{{special_offer}}</p>
</div>
{{/if}}
<footer>{{company_name}}</footer>
</body>
</html>- Validação de tipos de arquivo
- Sanitização de dados de entrada
- Tratamento de erros
- Logs de envio
- Não armazena dados permanentemente
- Processa planilhas em memória
- Adequado para listas de até 10.000 contatos
- Respeita limites de API do SendGrid
- Fork o projeto
- Crie uma branch para sua feature
- Commit suas mudanças
- Abra um Pull Request