O PHPMailer é uma bi­bli­o­teca de programas que regula a trans­fe­rên­cia de e-mails por meio do PHP. O PHPMailer é usado prin­ci­pal­mente para for­mu­lá­rios de contato em sites, mas também pode ser usado para enviar e-mails par­ti­cu­la­res.

O que é PHPMailer?

O PHPMailer é uma extensão de e-mail para PHP, que é de­sen­vol­vida e mantida pela co­mu­ni­dade PHP. É menos provável que os e-mails enviados usando o PHPMailer acabem em uma pasta de spam do que aqueles enviados com a função de e-mail integrada do PHP. Isso ocorre porque os e-mails escritos com o PHPMailer são enviados usando SMTP. SMTP significa Simple Mail Transfer Protocol e é usado para trans­fe­rir e-mails pela Internet. Além disso, o PHPMailer também suporta e-mails e anexos em HTML, ao contrário da função de e-mail integrada.

Para que o PHPMailer é usado?

O PHPMailer é um pouco mais tedioso de usar quando comparado a outros pro­ve­do­res de e-mail ou programas de e-mail in­te­gra­dos em seu com­pu­ta­dor, o que pode fazer com que você se pergunte por que as pessoas optam por usá-lo. A estrutura PHP sim­pli­fica a criação de respostas au­to­ma­ti­za­das, como as ne­ces­sá­rias para uma loja virtual. Além disso, o PHPMailer também é adequado para for­mu­lá­rios de contato em sites.

Quais são os re­qui­si­tos para o PHPMailer?

Você precisa de um servidor SMTP para usar o PHPMailer. Depende de você usar um servidor de e-mail de um provedor ou con­fi­gu­rar seu próprio servidor. É melhor usar o Composer (um ge­ren­ci­a­dor de pacotes para PHP) para instalar a extensão PHP.

Dica

Dominar os conceitos básicos de PHP é outro requisito im­por­tante para usar o PHPMailer. Nosso tutorial de PHP para ini­ci­an­tes pode ajudá-lo se você estiver tendo problemas com os conceitos básicos do PHP.

Como instalar o PHPMailer passo a passo

Etapa 1: Faça o download da versão atual do PHPMailer

Faça download da versão mais recente do PHPMailer. Você pode fazer isso com o Composer ou ma­nu­al­mente a partir do GitHub.

Opção 1: Fazer download usando o Composer

Se você tiver instalado o ge­ren­ci­a­dor de pacotes Composer, poderá sim­ples­mente usar este comando:

composer require phpmailer/phpmailer
bash

Im­por­tante: Se você instalou o PHPMailer com o Composer, deverá incluir o Composer em seu código PHP para enviar e-mails.

A seguinte linha de código pode ser usada:

require_once "vendor/autoload.php";
bash

A palavra-chave “require_once” garante que o Composer seja incluído apenas uma vez. Caso contrário, você poderá encontrar erros no programa. A ins­ta­la­ção usando o Composer está concluída.

Opção 2: Baixar di­re­ta­mente do GitHub

Os arquivos de origem do PHPMailer também podem ser baixados ma­nu­al­mente clicando no botão Code no re­po­si­tó­rio cor­res­pon­dente GitHub e baixando o arquivo ZIP. Se o Git estiver instalado em seu sistema, você poderá clonar o re­po­si­tó­rio usando um comando de linha.

Etapa 2: des­com­pac­tar arquivos

Se você fez o download do código-fonte do PHPMailer ma­nu­al­mente, é ne­ces­sá­rio abrir os arquivos ZIP. Selecione o local onde deseja instalar o PHPMailer e inclua o PHPMailer em seu script. Supondo que você tenha des­com­pac­tado os arquivos do PHPMailer em uma pasta chamada PHPMailer, você pode usar as seguintes linhas de código:

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
/*Class for handling exceptions and errors*/
require 'C:/PHPMailer/src/Exception.php';
/*PHPMailer class*/
require 'C:/PHPMailer/src/PHPMailer.php';
/*SMTP class needed to connect to an SMTP server*/.
require 'C:/PHPMailer/src/SMTP.php';
/*When creating a PHPMailer object, pass the parameter “true” to activate exceptions (messages in the event of an error)*/
$email = new PHPMailer(true);
php

Como enviar e-mails com o PHPMailer passo a passo

Etapa 1: Incluir na­mes­pa­ces

Cer­ti­fi­que-se de que os na­mes­pa­ces estejam corretos para acessar o PHPMailer. Use As de­cla­ra­ções são ne­ces­sá­rias para isso, portanto seu código deve conter as seguintes linhas:

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

Você pode acessar as classes in­di­vi­du­ais incluindo os nomes após a última barra.

Etapa 2: Captura de erros

Embora o PHPMailer seja uma forma muito confiável de enviar e-mails, podem ocorrer erros de tempos em tempos. Incluir uma instrução try catch em um envio de e-mail evitará que dados con­fi­den­ci­ais do seu servidor de e-mail sejam enviados aos usuários como uma mensagem de erro:

try {
    // Try to create a new instance of PHPMailer class, where exceptions are enabled
    $mail = new PHPMailer (true);
// (...)
} catch (Exception $e) {
        echo "Mailer Error: ".$e->getMessage();
}
php

Etapa 3: Au­ten­ti­ca­ção com SMTP

Você deve au­ten­ti­car-se com SMTP para usar o PHPMailer. Digite o endereço do seu servidor de e-mail ao lado do protocolo apro­pri­ado (, seja TLS/SSL ou SMTP) e inclua a porta com seu nome de usuário e senha. O protocolo e a porta que você usa dependem do seu provedor de e-mail. Os res­pec­ti­vos dados do servidor podem ser re­cu­pe­ra­dos no site do provedor de e-mail.

$mail->isSMTP();
$mail->SMTPAuth = true;
// Personal data
$mail->host = "smtp.domain.com";
$mail->Port = 587;
$mail->username = "name.surname@domain.com";
$mail->password = "testpassword4321";
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
php

Em vez de ENCRYPTION_STARTTLS, você também pode usar ENCRYPTION_SMTPS como método de crip­to­gra­fia. Com ENCRYPTION_SMTPS, uma conexão só será es­ta­be­le­cida se o TLS TLS estiver ativo**. Isso significa que a co­mu­ni­ca­ção com um servidor só é possível se o servidor suportar as medidas de crip­to­gra­fia ne­ces­sá­rias para a trans­mis­são segura. Com StartTLS, a conexão com o servidor de e-mail é es­ta­be­le­cida sem crip­to­gra­fia. Somente depois a crip­to­gra­fia é aplicada. Se não for possível aplicar a crip­to­gra­fia TLS, a troca de dados restante ocorrerá sem crip­to­gra­fia.

O SMTPS oferece um nível mais alto de segurança, enquanto o StartTLS temmelhor com­pa­ti­bi­li­dade. Devido à sua com­pa­ti­bi­li­dade, o StartTLS é ge­ral­mente a escolha preferida.

Etapa 4: Indique o des­ti­na­tá­rio do e-mail

Agora você pode designar os des­ti­na­tá­rios do seu e-mail no script.

// Sender
$mail->setFrom('info@example.com', 'name');
// Recipient, the name can also be stated
$mail->addAddress('info@example.com', 'name');
// Copy
$mail->addCC('info@example.com');
// Blind copy
$mail->addBCC('info@example.com', 'name');
php

Etapa 5: Adicionar o conteúdo do e-mail

Não se esqueça do conteúdo de seu e-mail. Ele ge­ral­mente consiste em um assunto e um texto, que pode ser es­pe­ci­fi­cado como versões HTML e não HTML. É im­por­tante observar que softwares mais antigos podem não ser capazes de lidar com o padrão atual HTML5, portanto, pode ser uma boa ideia criar seu e-mail usando HTML.

Você também pode enviar fa­cil­mente at­ta­ch­ments com o PHPMailer usando a função ad­dAt­ta­ch­ment função. Imagens, músicas, do­cu­men­tos, vídeos e GIFs também podem ser enviados com o PHPMailer. Você também pode renomear seus anexos com um segundo parâmetro opcional que é trans­fe­rido para a função.

$mail->isHTML(true);
// Subject
$mail->Subject = 'The subject of your mail';
// HTML content
$mail->Body = 'The mail text as HTML content. <b>bold</b> elements are allowed.';
$mail->AltBody = 'The text as a simple text element';
// Add attachment
$mail-> addAttachment("/home/user/Desktop/sampleimage.png", "sampleimage.png");
php

Etapa 6: Use a co­di­fi­ca­ção de ca­rac­te­res correta

É uma boa ideia ativar UTF-8 no PHPMailer para evitar a ocor­rên­cia de erros de exibição ao processarletras acen­tu­a­das de outros idiomas, es­pe­ci­al­mente ao usar anexos di­fe­ren­tes. Você pode fazer isso adi­ci­o­nando as seguintes linhas de código ao seu script PHP:

$mail->CharSet = 'UTF-8';
$mail->Encoding = 'base64';
php

Etapa 7: Enviar e-mail

Agora, é hora de enviar seu e-mail. Use o seguinte comando para fazer isso:

$mail->send();
php

É melhor colocar todo o código mostrado na so­li­ci­ta­ção de envio no bloco de instrução try do seu script para que você possa detectar quaisquer erros.

Exemplo de código para enviar um e-mail com o PHPMailer

Abaixo está todo o código ne­ces­sá­rio para enviar um e-mail contendo um anexo de imagem para um des­ti­na­tá­rio de sua escolha usando o PHPMailer:

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
require_once "vendor/autoload.php";
// Enable or disable exceptions via variable
$debug = true;
try {
    // Create instance of PHPMailer class
    $mail = new PHPMailer($debug);
     if ($debug) {
         // issue a detailed log
        $mail->SMTPDebug = SMTP::DEBUG_SERVER;
    }
    // Autenticação com SMTP
    $mail-> isSMTP();
    $mail->SMTPAuth = true;
    // Login
    $mail->Host = "smtp.domain.com";
    $mail->Port = 587;
    $mail->Username = "name.surname@domain.com";
    $mail->Password = "testpassword4321";
    $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
    $mail->setFrom('info@example.com', 'name');
    $mail->addAddress('info@example.com', 'name');
    $mail-> addAttachment("/home/user/Desktop/sampleimage.png", "sampleimage.png");
    $mail->CharSet = 'UTF-8';
    $mail->Encoding = 'base64';
    $mail->isHTML(true);
    $mail->Subject = 'O assunto do seu e-mail';
    $mail->Body = 'O texto do e-mail em conteúdo HTML.  <b>negrito</b> elementos são permitidos.';
    $mail->AltBody = 'O texto como um elemento de texto simples';
    $mail->send();
} catch (Exception $e) {
    echo "A mensagem não pôde ser enviada. Erro do correio: ".$e->getMessage();
}
php
Ir para o menu principal