O que é e para que serve o PHPMailer?
Em alguns servidores a função mail() do PHP não está disponível.
Essa função tem se tornado cada vez mais comum ser desativada nos servidores como medida de segurança.
Normalmente é desativada para proteção contra SPAM, Mail Spoofing e Proxy Mail Servers.
Caso qualquer um dos sites hospedados seja comprometido por um usuário mal-intencionado, evitam-se os riscos mencionados ao desabilitar essa função.
A biblioteca PHPMailer
A biblioteca PHPMailer nos permite, entre outras funcionalidades, estabelecer uma conexão SMTP com um servidor de correio. Esse servidor SMTP será quem enviará de fato o nosso e-mail.
O site oficial do projeto no GitHub contém a documentação com as opções de instalação e configuração.
O link para o Github é: https://github.com/PHPMailer/PHPMailer.
Instalação do PHPMailer
- Baixe o PHPMailer de https://github.com/PHPMailer/PHPMailer.
Clique no botão verde Code e, em seguida, clique em Download ZIP na caixa Clone.


- Extraia o arquivo baixado “PHPMailer-master.zip” e renomeie o diretório PHPMailer-master para PHPMailer
- Copie o diretório PHPMailer para a raiz do seu site (por exemplo public_html). Para verificar se os caminhos estão corretos, deve existir, a partir da raiz do seu projeto: /PHPMailer/src/PHPMailer.php
Exemplo de configuração
- Salve o código a seguir em um arquivo, por exemplo, exemplo.php
// Algum código<?php
// Mostrar erros PHP (Desativar em produção)
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
// Incluir a biblioteca PHPMailer
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
use PHPMailer\PHPMailer\SMTP;
require 'PHPMailer/src/Exception.php';
require 'PHPMailer/src/PHPMailer.php';
require 'PHPMailer/src/SMTP.php';
// Início
$mail = new PHPMailer(true);
try {
// Configuração SMTP
$mail->SMTPDebug = SMTP::DEBUG_SERVER; // Mostrar saída (Desativar em produção)
$mail->isSMTP(); // Habilitar envio SMTP
$mail->Host = 'CONFIGURAR_SERVIDOR_SMTP'; // Servidor SMTP
$mail->SMTPAuth = true; // Autenticação SMTP
$mail->Username = 'CONFIGURAR_USUARIO_SMTP'; // Usuário SMTP
$mail->Password = 'CONFIGURAR_SENHA_SMTP'; // Senha SMTP
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->Port = 587;
$mail->setFrom('hola@prueba.com', 'Seu nome'); // Remetente do e-mail
// Destinatários
$mail->addAddress('prueba@midominio.com', 'Nome do destinatário'); // E-mail e nome do destinatário
// Conteúdo do e-mail
$mail->isHTML(true);
$mail->Subject = 'Assunto do e-mail';
$mail->Body = 'Conteúdo do e-mail <b>em HTML!</b>';
$mail->AltBody = 'Conteúdo do e-mail em texto simples para clientes de e-mail que não suportam HTML';
$mail->send();
echo 'A mensagem foi enviada';
} catch (Exception $e) {
echo "A mensagem não foi enviada. Mailer Error: {$mail->ErrorInfo}";
}
- Modifique os parâmetros de conexão neste arquivo, o e-mail do remetente e do destinatário para onde enviaremos nosso e-mail de teste.
Procure as seguintes linhas no script e substitua os dados pelos seus.
É muito importante configurar esses dados usando uma conta válida à qual você tenha acesso!
// Configuração SMTP
$mail->Host = 'mail.tudominio.com'; // Aqui você deve configurar o servidor SMTP
$mail->Username = 'casilla@tudominio.com'; // Esta será a conta que enviará os e-mails
$mail->Password = 'senha_da_conta'; // Senha da sua conta
$mail->setFrom('casilla@tudominio.com', 'Seu nome'); // Configure seu nome e a conta remetente
Abaixo você verá esta seção para completar com seus dados:
// Destinatários
$mail->addAddress('prueba@otrodominio.com', 'Nome do destinatário'); // E-mail e nome do destinatário
E a última seção a ser preenchida com seus dados:
// Conteúdo do e-mail
$mail->isHTML(true);
$mail->Subject = 'Assunto do e-mail'; // O assunto que será exibido no e-mail enviado
$mail->Body = 'Conteúdo do e-mail <b>em HTML!</b>';
- Envie via FTP ou, usando o Gerenciador de Arquivos do cPanel, o diretório PHPMailer e o arquivo exemplo.php para a raiz do diretório público do seu site (public_html).
- Execute o exemplo em
https://tudominio.com/ejemplo.php.
Ele mostrará o debug do processo e, em seguida, você receberá o e-mail:
“A mensagem foi enviada”
Se for exibido algum erro, seja do PHP ou de conexão SMTP, você deverá depurar a origem do problema. A mensagem de erro que você receberia neste caso é:
“A mensagem não foi enviada. Mailer Error:”
Em produção, lembre-se de desativar o debug de erros do PHP e SMTP alterando as primeiras linhas do código de teste:
ini_set('display_errors', 1); // Altere o 1 para 0
ini_set('display_startup_errors', 1); // Altere o 1 para 0
error_reporting(E_ALL); // Altere o "E_ALL" para 0