Não perca as ofertas por tempo limitado!

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

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.

Semua konten tutorial di website ini telah melalui peninjauan menyeluruh sesuai padrões editoriais e valores da Hostinger.

Author
O autor

Bruno Santana

Jornalista formado pela Universidade Federal da Bahia e Especialista em Marketing de Conteúdo na Hostinger, onde atuo na criação e otimização de artigos úteis, envolventes e criativos em áreas como desenvolvimento web e, marketing. Além disso, sou colaborador eventual do site MacMagazine e da editoria de cultura do Jornal A Tarde, fascinado por arte, culinária e tecnologia.

O que dizem nossos clientes

Deixe uma resposta

Por gentileza, preencha os campos solicitados.Marque o campo de aceitação da privacidade.Preencha os campos necessários e marque a opção de aceitar termos de privacidade.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Thank you! Your comment has been successfully submitted. It will be approved within the next 24 hours.