Dicas Gerais

Como preparar um formulário PHP com SMTP autenticado e TLS

Use uma biblioteca mantida, valide campos e mantenha destinatários e credenciais sob controle. Confira os cuidados essenciais.

Revisão técnica: 08/09/2026. SMTP autenticado permite que uma aplicação envie mensagens por uma conta autorizada. Ele não impede sozinho o abuso de um formulário. O processamento também precisa validar campos, limitar envios e manter destinatários e credenciais sob controle.

Use uma biblioteca mantida

Prefira a biblioteca de e-mail do framework ou uma solução como PHPMailer. O código antigo deste artigo montava SMTP manualmente, autenticava sem iniciar TLS e anunciava sucesso sem verificar o resultado. Ele foi retirado.

A função mail() do PHP não é uma classe e não é, por si só, a causa de spam. A escolha do transporte precisa considerar a infraestrutura e os controles da aplicação.

Configure o transporte com dados do provedor

O trecho abaixo é apenas a configuração de transporte, não um formulário completo. Pressupõe PHPMailer instalado pelo Composer, autoload carregado e variáveis de ambiente definidas de forma privada. O exemplo usa STARTTLS na porta 587; confirme essa combinação com o serviço.

$mail = new \PHPMailer\PHPMailer\PHPMailer(true);
$mail->isSMTP();
$mail->Host = getenv('SMTP_HOST');
$mail->SMTPAuth = true;
$mail->Username = getenv('SMTP_USER');
$mail->Password = getenv('SMTP_PASSWORD');
$mail->SMTPSecure = \PHPMailer\PHPMailer\PHPMailer::ENCRYPTION_STARTTLS;
$mail->Port = 587;
$mail->CharSet = 'UTF-8';

Valide a presença das configurações antes de usar o transporte e mantenha a verificação do certificado TLS. Não adivinhe o servidor a partir do domínio do usuário nem grave a senha em repositório público.

Controle o conteúdo e os destinatários

Defina no servidor um remetente autorizado e o destinatário interno do contato. O e-mail validado do visitante pode ser usado em Reply-To; não permita que ele escolha qualquer destinatário ou se apresente como remetente autenticado.

Aceite somente os campos previstos, confira tipos e limites e não transforme todo o POST em mensagem. Prefira corpo em texto simples ou codifique corretamente os valores inseridos em HTML. Aplique controles de frequência e a proteção contra automação adequada ao formulário antes de enviar.

Trate o resultado e teste falhas

Chame o envio somente depois das verificações e trate as exceções. Registre detalhes técnicos em local restrito, com uma resposta clara ao visitante. Aceitação pelo servidor SMTP não garante chegada à caixa de entrada.

Em teste, confira dados inválidos, repetição de envio e falha de autenticação, além do caso correto. Referência: documentação e exemplos oficiais do PHPMailer.