As melhores ofertas do ano. 30 dias para pedir reembolso. Ofertas por tempo limitado. Suporte sempre online. Não perca!

Como usar PHPMailer para enviar e-mails pelo seu servidor web

Jan 28, 2026 / 7 min de leitura
Como usar PHPMailer para enviar e-mails pelo seu servidor web

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:

  1. Baixe e instale o PHPMailer usando o Composer ou o GitHub.
  2. Carregue a biblioteca em seu script PHP com um autoloader ou manualmente.
  3. Crie uma nova instância do PHPMailer.
  4. Configure as definições de SMTP (servidor, porta, nome de utilizador, palavra-passe).
  5. Configure os detalhes do e-mail, como remetente, destinatário, assunto e corpo da mensagem.
  6. Envie o e-mail e lide com possíveis erros.

Eis um exemplo simples:

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

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 PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

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.

Este artigo é uma versão localizada de How to send emails from your web server with  PHPMailer, originalmente publicado em inglês.

Todo o conteúdo dos tutoriais deste site segue os rigorosos padrões editoriais e valores da Hostinger.

Bruno é redator de conteúdo na Hostinger, focado em criar e otimizar artigos úteis e envolventes sobre desenvolvimento web e marketing. Com formação em jornalismo, ele combina storytelling com insights práticos para tornar temas complexos mais fáceis de entender. Também já colaborou com publicações como MacMagazine e Jornal A Tarde. Fora do trabalho, gosta de respirar arte, cozinhar e acompanhar novidades no mundo da tecnologia.

Trusted by 4+ million website owners worldwide

See our 73.697 reviews on Trustpilot