PHPMailer 6: Novidades e guia de migração passo-a-passo

PHPMailer 6: Novidades e guia de migração passo-a-passo

O PHPMailer 6 foi lançado no final de agosto de 2017, trazendo inúmeras novidades e melhorias em relação à versão 5.

Neste artigo eu ensinei como utilizar essa biblioteca. Mas, com a nova versão 6, algumas coisas mudaram.

Vamos falar sobre elas neste artigo. Também vou apresentar um guia passo-a-passo sobre como migrar do PHPMailer 5 para a nova versão 6.

O PHPMailer 6 é uma versão que trouxe diversas melhorias e atualizações. A principal mudança está na forma de carregar a classe PHPMailer, que quebra a retrocompatibilidade com a versão anterior.

Porém, com poucas modificações, você consegue fazer a portabilidade dos seus scripts para usar o novo PHPMailer 6.

Principais mudanças do PHPMailer 6

Essa nova versão deixou de usar o arquivo PHPMailerAutoload.php. Agora a classe está em um namespace próprio e segue o padrão PSR-4, podendo ser carregada pelo Composer.

Além disso, não possui mais os arquivos class.phpmailer.php, class.smtp.php e class.pop3.php, que alguns programadores carregavam manualmente via include/require.

A lista completa de mudanças pode ser vista no Changelog do PHPMailer 6.0.

Instalando o PHPMailer 6

A melhor forma de instalar dependências no PHP é usando o Composer. Se você ainda não conhece o Composer, sugiro que leia este meu artigo e comece a usá-lo! Seu trabalho ficará muito mais fácil e rápido!

Para instalar o PHPMailer usando o Composer, execute este comando:

composer require phpmailer/phpmailer

Envio de Email com SMTP Autenticado usando o PHPMailer 6

Feita a instalação do PHPMailer, podemos fazer nosso primeiro envio de email.

Vou utilizar o Mailtrap como SMTP. Você pode utilizar qualquer outro, inclusive o Gmail. Apenas lembre-se de que, ao usar o Gmail, você precisa permitir o acesso de apps menos seguros à sua conta.

Vamos ao script.

<?php

// inclui as classes do PHPMailer
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

// inclui o autoloader do Composer
require 'vendor/autoload.php';

// inicia a classe PHPMailer habilitando o disparo de exceções
$mail = new PHPMailer(true);
try
{
    // habilita o debug
    // 0 = em mensagens de debug
    // 1 = mensagens do cliente SMTP
    // 2 = mensagens do cliente e do servidor SMTP
    // 3 = igual o 2, incluindo detalhes da conexão
    // 4 = igual o 3, inlcuindo mensagens de debug baixo-nível
    $mail->SMTPDebug = 2;
    
    // utilizar SMTP
    $mail->isSMTP();

    // habilita autenticação SMTP
    $mail->SMTPAuth = true;

    // servidor SMTP
    $mail->Host = 'smtp.mailtrap.io'; 

    // usuário, senha e porta do SMTP
    $mail->Username = 'username';
    $mail->Password = 'senha';
    $mail->Port = 465;
    
    // tipo de criptografia: "tls" ou "ssl"
    $mail->SMTPSecure = 'tls';
    
    // email e nome do remetente
    $mail->setFrom('[email protected]', 'Beraldo');
    
    // Email e nome do(s) destinatário(s)
    // você pode chamar addAddress quantas vezes quiser, para
    // incluir diversos destinatários
    $mail->addAddress('[email protected]', 'Destinatário 1');
    $mail->addAddress('[email protected]', 'Destinatário 2');
    
    // endereço que receberá as respostas
    $mail->addReplyTo('contato@ultimatephp.com.br', 'ULTIMATE PHP'); 
    
    // com cópia (CC) e com cópia oculta (BCC)
    $mail->addCC('[email protected]');
    $mail->addBCC('[email protected]');
    
    // anexa um arquivo
    $mail->addAttachment('composer.json');

    // define o formato como HTML
    $mail->isHTML(true);
    
    // codificação UTF-8
    $mail->Charset = 'UTF-8';
    
    // assunto do email
    $mail->Subject = 'Testando o PHPMailer 6';
    
    // corpo do email em HTML
    $mail->Body    = '
<h1>Testando o <em>PHPMailer 6</em></h1>

';
    
    // corpo do email em texto
    $mail->AltBody = 'Testando o PHPMailer 6';
    
    // envia o email
    $mail->send();
    
    echo 'Mensagem enviada com sucesso!' . PHP_EOL;
}
catch (Exception $e)
{
    echo 'Falha ao enviar email.' . PHP_EOL;
    echo 'Erro: ' . $mail->ErrorInfo . PHP_EOL;
}

De modo geral, o script é bem semelhante ao que apresentei no meu antigo post sobre PHPMailer (versão 5).

A principal diferença é a forma de carregar a classe principal, que agora segue o padrão PSR-4 e pode ser carregada pelo autoloader do Composer, o que facilita e organiza muito o nosso trabalho.

Atualizando a versão do PHPMailer no Composer

Caso você já utilize o PHPMailer 5, você não precisa mudar completamente seus scripts. Existe uma forma simples de atualizar para a versão 6.

Basta mudar a versão do pacote no composer.json e modificar a maneira como instanciamos a classe PHPMailer, seguindo o novo padrão.

Eu escrevi um guia gratuito passo-a-passo onde mostro exatamente como fazer a migração de forma simples e rápida.

Também mostro mais detalhes sobre o PHPMailer 6, explicando as principais mudanças e detalhando melhor o código.

Clique aqui e baixe gratuitamente o meu guia sobre o novo PHPMailer 6

 

Guia Grátis de Atualização Passo-a-Passo

Aprenda passo-a-passo como migrar de PHPMailer 5 para o PHPMailer 6

Novidades e mudanças da nova versão do PHPMailer

Baixe gratuitamente este guia e não fique com scripts obsoletos!

The following two tabs change content below.
Graduado em Ciência da Computação, pela Universidade Federal do Paraná (UFPR), é desenvolvedor de software desde 2008, com foco em Desenvolvimento Web com PHP.