Sistema web moderno e seguro para envio de emails através de SMTP com PHPMailer. Interface responsiva construída com Tailwind CSS e backend robusto com proteções avançadas de segurança.
- Design Responsivo - Optimizado para mobile e desktop
- Tailwind CSS - Interface moderna e profissional
- UX Melhorada - Feedback visual em tempo real
- Upload de Anexos - Suporte a múltiplos tipos de arquivo
- Rate Limiting - Proteção contra spam e abuso
- Validação de Entrada - XSS e SQL Injection protection
- Sanitização de Dados - Filtragem completa de inputs
- Configuração Segura - Credenciais SMTP protegidas
- Validação de Arquivos - Tipo e tamanho limitados
- Múltiplos Destinatários - Suporte a lista de emails
- HTML e Texto - Conteúdo em formato dual
- Anexos - Suporte a arquivos até 5MB
- Template Profissional - Layout HTML responsivo
- Reply-To Configurável - Respostas direcionadas
- Multi-provedor SMTP - Gmail, Outlook, Yahoo, etc.
- Variáveis de Ambiente - Configuração segura
- Tratamento de Erros - Mensagens amigáveis ao usuário
- PHP 8.0 ou superior
- Composer (para instalar dependências)
- Servidor SMTP (Gmail, SendGrid, etc.)
- Clone o repositório
git clone https://github.com/NinoMiquelino/secure-php-mailer.git
cd secure-php-mailer- Instale as dependências
composer require phpmailer/phpmailer- Configure o SMTP
Variáveis de Ambiente (Recomendado)
Crie um arquivo .env (não versionado):
SMTP_HOST=smtp.gmail.com
SMTP_USER=seuemail@gmail.com
SMTP_PASS=sua-app-password
SMTP_PORT=587
SMTP_ENCRYPTION=tls
ReplyTo_EMAIL=seuemail@gmail.com
SYS_NAME=Seu Sistema- Acesse o sistema
# Abra no navegador:
http://localhost/secure-php-mailer🛠️ Configuração Detalhada
Configuração SMTP para Gmail
- Ative a verificação em duas etapas
· Acesse https://myaccount.google.com/security
· Ative "Verificação em duas etapas" - Gere uma Senha de App
· Acesse https://myaccount.google.com/apppasswords
· Selecione "Email" e gere uma senha
· Use a senha de 16 caracteres no código - Configuração no código
$mail->Host = 'smtp.gmail.com';
$mail->Username = 'seuemail@gmail.com';
$mail->Password = 'abcd efgh ijkl mnop'; // App Password
$mail->Port = 587;
$mail->SMTPSecure = 'tls';Configuração para Outros Provedores
Outlook/Office 365:
$mail->Host = 'smtp.office365.com';
$mail->Port = 587;
$mail->SMTPSecure = 'tls';SendGrid:
$mail->Host = 'smtp.sendgrid.net';
$mail->Username = 'apikey';
$mail->Password = 'SG.sua_chave_api';📁 Estrutura do Projeto
secure-php-mailer/
│
├── index.html # Interface principal
├── process.php # Backend de processamento
├── cache/ # Cache de rate limiting
├── README.md
└── LICENSE # Arquivo de Licença da aplicação
🔧 Configuração de Segurança
Configurações de Segurança Implementadas
· Rate Limiting: 10 requisições por minuto por IP
· Validação de Arquivos: Tipos e tamanhos limitados
· Sanitização: Todos os inputs são validados e sanitizados
· Headers de Segurança: Proteção XSS, Clickjacking, etc.
🎯 Uso do Sistema
Envio Básico de Email
- Preencha o destinatário (múltiplos separados por vírgula)
- Adicione um assunto claro
- Escreva a mensagem (suporte a formatação)
- Opcional: Anexe um arquivo (até 5MB)
- Clique em "Enviar Email"
Recursos Avançados
Múltiplos Destinatários:
usuario1@email.com, usuario2@email.com, usuario3@email.com
Template HTML Automático:
<!-- O sistema aplica automaticamente um template profissional -->Reply-To Configurável:
// As respostas podem ser direcionadas para outro email
$mail->addReplyTo('suporte@empresa.com', 'Equipe de Suporte');🐛 Solução de Problemas
Erros Comuns e Soluções
"SMTP Error: Could not connect to SMTP host"
· Verifique as credenciais SMTP
· Confirme a porta e encryption
· Gere App Password para Gmail
· Verifique firewall do servidor
"Unexpected end of JSON input"
· PHP está retornando erro antes do JSON
· Verifique syntax errors no código
· Confirme que PHPMailer está instalado
Email não chega no destinatário
· Verifique pasta de spam
· Confirme limites do provedor SMTP
Anexo não é enviado
· Tamanho máximo: 5MB
· Tipos permitidos: PDF, DOC, DOCX, JPG, PNG, TXT
· Verifique permissões de upload
Modo Debug
Ative o debug temporariamente em process.php:
$mail->SMTPDebug = 2; // Nível de debug
$mail->Debugoutput = 'error_log'; // Saída do debug🔍 Recursos de Segurança
Rate Limiting
O sistema impede spam através de limite de requisições:
· 10 requisições por minuto por IP
· Dados armazenados em cache temporário
· Proteção contra ataques de força bruta
Validação de Entrada
· Emails: Validação com filter_var()
· Arquivos: Verificação de tipo e tamanho
· Texto: Sanitização contra XSS
· CSRF Protection: Headers de segurança
Padrões de Código
· Siga PSR-12 para PHP
· Use ESLint para JavaScript
🛡️ Privacidade e Segurança
· Não armazenamos emails ou conteúdos enviados
· Credenciais SMTP são protegidas por variáveis de ambiente
· Comunicação com servidor SMTP usa encryption
Contribuições são sempre bem-vindas!
Sinta-se à vontade para abrir uma issue com sugestões ou enviar um pull request com melhorias.
📧 Entre em contato pelo LinkedIn
💻 Desenvolvido por Onivaldo Miquelino