Central de Ajuda

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

  1. 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.
  1. Extraia o arquivo baixado “PHPMailer-master.zip” e renomeie o diretório PHPMailer-master para PHPMailer
  2. 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

  1. Salve o código a seguir em um arquivo, por exemplo, exemplo.php
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}";
}
  1. 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!
php
// 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:

php
// 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:

php
// 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>';  
  1. 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).
  2. 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:

text
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
Guia g.0069 · Versão de origem 1 · pt-BR