Como usar PHPMailer para enviar e-mails pelo seu servidor web
Mar 10, 2026
/
Bruno S.
/
7 min Ler
A comunicação por e-mail é essencial para qualquer site. Ela está por trás de tarefas como redefinição de senha, envio de formulários e atendimento ao cliente. Nesse sentido, a função mail() do PHP até consegue enviar mensagens simples, mas muitas vezes falha na entrega (principalmente na caixa de entrada) e não oferece recursos que empresas costumam precisar.
O PHPMailer resolve essas limitações ao permitir envio com SMTP autenticado, criptografia segura, formatação em HTML e suporte a anexos. Assim, seus e-mails ficam mais profissionais e têm muito mais chance de chegar ao destino.
Para aproveitar tudo o que a biblioteca oferece, vale entender como usar PHPMailer para:
- Instalar a biblioteca com Composer ou manualmente
- Configurar SMTP para garantir entregabilidade
- Usar funções principais do PHPMailer, como setFrom(), addAddress() e Body
- Criar um formulário de contato funcional com validação
- Conectar o PHPMailer ao Gmail e outros provedores
- Resolver erros comuns, como falhas de conexão SMTP e problemas de autenticação via DNS
O que é PHPMailer?
PHPMailer é uma biblioteca PHP que oferece uma maneira simples de enviar e-mails diretamente do seu servidor web . Ao contrário da função básica mail() do PHP, ela suporta recursos avançados como:
- Autenticação SMTP e criptografia (SSL / TLS)
- Mensagens HTML e alternativas em texto simples
- Anexos de arquivos e imagens embutidas
- Cabeçalhos personalizados e endereços de resposta
Essas funcionalidades fazem do PHPMailer a escolha preferida dos desenvolvedores que precisam de um gerenciamento de e-mails seguro e profissional em seus aplicativos.
O PHPMailer é melhor que a função mail()?
Sim, o PHPMailer é melhor que a função mail() na maioria dos casos de uso. Veja só o porquê:
- Estabilidade. Funciona com SMTP, reduzindo a probabilidade de os e-mails caírem na pasta de spam.
- Segurança. Suporta métodos de autenticação modernos, como TLS.
- Flexibilidade . Permite anexos, formatação HTML e cabeçalhos avançados.
- Compatibilidade. Amplamente suportado e atualizado com as novas versões do PHP .
Se você estiver criando algo além de um script simples, o PHPMailer oferece muito mais controle e consistência do que a função mail().
Como usar o PHPMailer para enviar e-mails
Siga estes passos gerais para enviar emails com o PHPMailer:
- Baixe e instale o PHPMailer usando o Composer ou o GitHub.
- Carregue a biblioteca em seu script PHP com um autoloader ou manualmente.
- Crie uma nova instância do PHPMailer.
- Configure as definições de SMTP (servidor, porta, nome de utilizador, palavra-passe).
- Configure os detalhes do e-mail, como remetente, destinatário, assunto e corpo da mensagem.
- Envie o e-mail e lide com possíveis erros.
Eis um exemplo simples:
<?php
use PHPMailerPHPMailerPHPMailer;
use PHPMailerPHPMailerException;
require 'vendor/autoload.php';
$mail = new PHPMailer(true);
try {
// Configuração SMTP
$mail->isSMTP();
$mail->Host = 'smtp.example.com';
$mail->SMTPAuth = true;
$mail->Username = 'seu@email.com';
$mail->Password = 'senha';
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->Port = 587;
// Configurações do e-mail
$mail->setFrom('seu@email.com', 'Seu nome');
$mail->addAddress('destinatario@dominio.com');
$mail->Subject = 'E-mail de teste';
$mail->Body = 'Este é um e-mail de teste enviado com PHPMailer.';
$mail->send();
echo 'Mensagem enviada com sucesso';
} catch (Exception $e) {
echo "Erro: {$mail->ErrorInfo}";
}
Instalando o PHPMailer
A maneira mais fácil de instalar o PHPMailer é com o Composer , o gerenciador de dependências do PHP. Execute este comando no diretório raiz do seu projeto:
composer require phpmailer/phpmailer
Após a instalação, você encontrará o PHPMailer dentro da pasta vendor/ do seu projeto:
/seu-projeto
/vendor
/phpmailer
/phpmailer Para usar a biblioteca, carregue o autoloader do Composer no topo do seu script PHP:
require 'vendor/autoload.php';
Se você não usa Composer, também dá para baixar o PHPMailer pelo GitHub. Nesse caso, coloque a pasta do PHPMailer dentro do seu projeto e inclua os arquivos manualmente:
require 'PHPMailer/src/PHPMailer.php'; require 'PHPMailer/src/SMTP.php'; require 'PHPMailer/src/Exception.php';
Para iniciantes, o Composer é a melhor opção, já que ele cuida das dependências e facilita atualizações.
Entendendo os componentes do PHPMailer
O PHPMailer oferece diversos métodos e propriedades para criar e-mails profissionais. Aqui estão os mais importantes, juntamente com exemplos curtos que você pode reutilizar:
- setFrom() – define o endereço e o nome do remetente.
$mail->setFrom('no-reply@dominio.com', 'Nome do site');- addAddress() – adiciona um ou mais destinatários.
$mail->addAddress('usuario@exemplo.com', 'João Silva');
$mail->addAddress('admin@exemplo.com'); // vários destinatários- addReplyTo() – especifica o endereço de e-mail para resposta. Útil para formulários de contato.
$mail->addReplyTo('suporte@dominio.com', 'Equipe de suporte');- Subject – define o assunto do e-mail.
$mail->Subject = 'Confirmação do pedido';
- Body – o conteúdo principal em HTML ou texto simples.
$mail->Body = '<h1>Obrigado!</h1><p>Seu pedido foi recebido.</p>';
- AltBody – alternativa em texto simples para clientes que não suportam HTML.
$mail->AltBody = 'Obrigado! Seu pedido foi recebido.';
- addAttachment() – anexa arquivos.
$mail->addAttachment('/caminho/para/fatura.pdf', 'Fatura.pdf');Esses componentes básicos oferecem controle total sobre a aparência e o funcionamento do seu e-mail, tornando-o mais confiável do que a função básica mail() do PHP.
Como usar PHPMailer com o SMTP da Hostinger
A maioria dos provedores de hospedagem, incluindo a Hostinger, permite que você envie e-mails usando seus servidores SMTP . Este é o método recomendado, pois melhora a entregabilidade e reduz o risco de seus e-mails serem sinalizados como spam.
Para usar o SMTP da Hostinger com o PHPMailer, você precisará destas informações:
- Servidor SMTP: smtp.hostinger.com
- Porta: 587 (TLS) ou 465 (SSL)
- Nome de usuário
- : seu endereço de e-mail completo (por exemplo, seunome@seudominio.com)
- Senha: a senha dessa conta de e-mail.
Aqui está um exemplo de configuração:
$mail->isSMTP(); $mail->Host = 'smtp.hostinger.com'; $mail->SMTPAuth = true; $mail->Username = 'usuario@seudominio.com'; $mail->Password = 'senha'; $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; // ou ENCRYPTION_SMTPS para porta 465 $mail->Port = 587;
🔑 Dicas para iniciantes :
- Certifique-se de já ter criado uma conta de e-mail em hPanel → E-mails → Gerenciar → Criar nova conta .
- A senha SMTP é aquela que você definiu ao criar a conta de e-mail, não a sua senha de login da Hostinger.
- Primeiro, teste suas credenciais no Webmail . Se você conseguir fazer login lá, eles também devem funcionar com o PHPMailer.
Depois de configurado, o PHPMailer vai usar os servidores da Hostinger para enviar seus e-mails com mais segurança e confiabilidade.
Criando um formulário de contato com PHPMailer
O PHPMailer é frequentemente usado para formulários de contato. Você precisará de um formulário HTML na página e um manipulador PHP que utilize o PHPMailer para enviar a mensagem.
Passo 1. Crie um formulário HTML simples
Este formulário coletará o nome, o e-mail e a mensagem do visitante. Salve o arquivo como index.html ou insira-o em sua página web:
<form method="POST" action="/contact.php"> <label for="name">Nome</label> <input id="name" name="name" type="text" required> <label for="email">E-mail</label> <input id="email" name="email" type="email" required> <label for="message">Mensagem</label> <textarea id="message" name="message" rows="6" required></textarea> <button type="submit">Enviar</button> </form>
Passo 2. Processe o envio com PHPMailer
Agora que o formulário está pronto, crie um script PHP (contact.php) para processar o envio e enviá-lo via PHPMailer. Este script recebe os dados do formulário, os higieniza e os envia para o seu endereço de e-mail:
<?php
use PHPMailerPHPMailerPHPMailer;
use PHPMailerPHPMailerException;
require 'vendor/autoload.php';
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// Validação e sanitização básica
$name = trim($_POST['name'] ?? '');
$email = trim($_POST['email'] ?? '');
$message = trim($_POST['message'] ?? '');
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
exit('E-mail inválido.');
}
// Escapa o conteúdo do usuário antes de inserir no HTML
$safeName = htmlspecialchars($name, ENT_QUOTES, 'UTF-8');
$safeEmail = htmlspecialchars($email, ENT_QUOTES, 'UTF-8');
$safeMessage = nl2br(htmlspecialchars($message, ENT_QUOTES, 'UTF-8'));
$mail = new PHPMailer(true);
try {
// SMTP (Hostinger)
$mail->isSMTP();
$mail->Host = 'smtp.hostinger.com';
$mail->SMTPAuth = true;
$mail->Username = 'seu@seudominio.com';
$mail->Password = 'senha-da-conta-de-email';
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; // 587
$mail->Port = 587;
// Conteúdo do e-mail
$mail->setFrom('seu@seudominio.com', 'Contato do site');
$mail->addAddress('seu@seudominio.com', 'Caixa de entrada');
// Responder vai para o visitante
$mail->addReplyTo($email, $name);
$mail->Subject = 'Nova mensagem do formulário de contato';
$mail->isHTML(true);
$mail->Body = "<p><strong>Nome:</strong> {$safeName}</p>
<p><strong>E-mail:</strong> {$safeEmail}</p>
<p><strong>Mensagem:</strong><br>{$safeMessage}</p>";
$mail->AltBody = "Nome: {$name}nE-mail: {$email}nMensagem:n{$message}";
// Upload de arquivo (opcional)
// if (!empty($_FILES['attachment']['tmp_name'])) {
// $mail->addAttachment($_FILES['attachment']['tmp_name'], $_FILES['attachment']['name']);
// }
$mail->send();
echo 'Mensagem enviada com sucesso.';
} catch (Exception $e) {
echo 'Erro: ' . $mail->ErrorInfo;
}
}Dicas úteis:
- Valide o input no front-end e no back-end para reduzir spam e abuso.
- Use setFrom() com um e-mail do seu domínio e deixe o e-mail do visitante no addReplyTo() — assim as respostas vão para a pessoa certa.
- Considere adicionar um campo “honeypot” simples ou um CAPTCHA para diminuir envios automáticos por bots.
Como resolver erros comuns do PHPMailer
O PHPMailer costuma mostrar mensagens de erro bem detalhadas. Abaixo estão algumas das mais comuns e o que fazer em cada caso.
Não foi possível conectar ao host SMTP
Esse erro geralmente indica que o endereço do servidor SMTP ou a porta estão incorretos. As causas mais comuns são:
- Nome do servidor incorreto. Verifique novamente os detalhes de SMTP do seu provedor de hospedagem. Por exemplo, com a Hostinger, geralmente é smtp.hostinger.com .
- Porta bloqueada. Muitos servidores bloqueiam a porta 25. Em vez disso, use a porta 587 (TLS) ou 465 (SSL).
- Restrições de firewall. Se você estiver realizando testes localmente (como no XAMPP ou WAMP), seu provedor de internet ou firewall pode bloquear conexões SMTP de saída.
👉 Se você não tiver certeza, confirme com o provedor quais são as configurações SMTP corretas e se as portas estão liberadas na sua rede/servidor.
SMTP connect() failed
Esse erro geralmente indica uma falha na autenticação. Em outras palavras, o PHPMailer está conseguindo se comunicar com o servidor, mas seus dados de login não estão sendo aceitos. Isso pode ser devido a:
- Problemas com o nome de usuário. Utilize sempre seu endereço de e-mail completo como nome de usuário SMTP.
- Senha incorreta. Se você alterou sua senha de e-mail recentemente, atualize-a em seu script.
- Criptografia incompatível. Certifique-se de estar usando o método de segurança correto. Por exemplo:
- Porta 587 → PHPMailer::ENCRYPTION_STARTTLS
- Porta 465 → PHPMailer::ENCRYPTION_SMTPS
👉 Se continuar falhando, teste o login no Webmail. Se não der para entrar lá, as credenciais também não vão funcionar no PHPMailer.
Mensagem rejeitada devido a SPF/DKIM/DMARC
Aqui, o servidor do destinatário recusou sua mensagem porque o seu domínio não tem (ou não está usando corretamente) os registros de autenticação de e-mail. Esses registros ficam no DNS e provam que você tem permissão para enviar e-mails em nome do domínio:
- SPF (Sender Policy Framework). Indica aos servidores de e-mail quais endereços IP ou hosts podem enviar e-mails para o seu domínio.
- DKIM (DomainKeys Identified Mail). Adiciona uma assinatura digital que verifica se sua mensagem não foi adulterada.
- DMARC (Domain-based Message Authentication, Reporting & Conformance). Indica aos servidores receptores como lidar com mensagens que falham nas verificações SPF ou DKIM.
👉 Para corrigir, acesse o painel do seu registrador ou da hospedagem e adicione/ajuste os registros DNS necessários. A maioria dos provedores (incluindo a Hostinger) oferece guias passo a passo para configurar SPF, DKIM e DMARC.
Sem esses registros, suas mensagens têm muito mais chance de cair no spam — ou serem rejeitadas de vez.
Dá para enviar e-mails com PHPMailer usando Gmail ou outros serviços?
Sim. O PHPMailer funciona com Gmail, Outlook, Yahoo e a maioria dos provedores de e-mail. Você só precisa usar as configurações SMTP corretas e o método de autenticação certo. No caso do Gmail, por exemplo, use estes dados:
- Servidor SMTP: smtp.gmail.com
- Porta: 587 (TLS) ou 465 (SSL)
- Nome de usuário: seu endereço completo do Gmail
- Senha: sua senha do aplicativo, caso a verificação em duas etapas esteja ativada.
- Na sua Conta do Google, crie uma Senha de app em Segurança → Verificação em duas etapas → Senhas de apps e use-a em $mail->Password.
Exemplo :
$mail->isSMTP(); $mail->Host = 'smtp.gmail.com'; $mail->SMTPAuth = true; $mail->Username = 'seunome@gmail.com'; $mail->Password = 'sua-senha-de-app'; // não é sua senha normal $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; $mail->Port = 587;
Também vale ficar atento a limites do provedor. Muitos serviços gratuitos impõem um teto diário de envios via SMTP, e o Gmail costuma ter um limite baixo. Se você precisar de mais volume ou entrega mais rápida, pode ser melhor usar um serviço de e-mail dedicado no futuro. A boa notícia é que o PHPMailer se conecta a qualquer servidor SMTP, então a troca costuma ser simples.
Checklist rápido:
- Use a porta e criptografia recomendadas pelo provedor
- Faça autenticação com as credenciais corretas
- Use um remetente (From) com um domínio que você controla para melhorar a entregabilidade
- Configure SPF, DKIM e DMARC no DNS do seu domínio para aumentar a confiança dos servidores de destino
O e-mail ainda é a base dos serviços online?
Com certeza. O e-mail continua sendo um dos canais mais confiáveis para enviar mensagens transacionais, campanhas de marketing e respostas de suporte ao cliente, mesmo com o surgimento de novas ferramentas de comunicação. Para empresas, uma estrutura profissional de e-mail com automação economiza tempo e melhora o relacionamento com o público.
Se você deseja ir além dos e-mails manuais, explore nosso guia de automação de email marketing para otimizar campanhas e comunicação com o cliente.
Todo o conteúdo dos tutoriais deste site segue os rigorosos padrões editoriais e valores da Hostinger.