Como enviar e-mails facilmente com o PHPMailer

O PHPMailer é uma biblioteca de programas que regula a transferência de e-mails por meio do PHP. O PHPMailer é usado principalmente para formulários de contato em sites, mas também pode ser usado para enviar e-mails particulares.

O que é PHPMailer?

O PHPMailer é uma extensão de e-mail para PHP, que é desenvolvida e mantida pela comunidade 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 transferir 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 provedores de e-mail ou programas de e-mail integrados em seu computador, o que pode fazer com que você se pergunte por que as pessoas optam por usá-lo. A estrutura PHP simplifica a criação de respostas automatizadas, como as necessárias para uma loja virtual. Além disso, o PHPMailer também é adequado para formulários de contato em sites.

Quais são os requisitos 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 configurar seu próprio servidor. É melhor usar o Composer (um gerenciador de pacotes para PHP) para instalar a extensão PHP.

Dica

Dominar os conceitos básicos de PHP é outro requisito importante para usar o PHPMailer. Nosso tutorial de PHP para iniciantes 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 manualmente a partir do GitHub.

Opção 1: Fazer download usando o Composer

Se você tiver instalado o gerenciador de pacotes Composer, poderá simplesmente usar este comando:

composer require phpmailer/phpmailer
bash

Importante: 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 instalação usando o Composer está concluída.

Opção 2: Baixar diretamente do GitHub

Os arquivos de origem do PHPMailer também podem ser baixados manualmente clicando no botão Code no repositório correspondente GitHub e baixando o arquivo ZIP. Se o Git estiver instalado em seu sistema, você poderá clonar o repositório usando um comando de linha.

Etapa 2: descompactar arquivos

Se você fez o download do código-fonte do PHPMailer manualmente, é necessário abrir os arquivos ZIP. Selecione o local onde deseja instalar o PHPMailer e inclua o PHPMailer em seu script. Supondo que você tenha descompactado 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 namespaces

Certifique-se de que os namespaces estejam corretos para acessar o PHPMailer. Use As declarações são necessá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 individuais 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 confidenciais 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: Autenticação com SMTP

Você deve autenticar-se com SMTP para usar o PHPMailer. Digite o endereço do seu servidor de e-mail ao lado do protocolo apropriado (, 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 respectivos dados do servidor podem ser recuperados 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 criptografia. Com ENCRYPTION_SMTPS, uma conexão só será estabelecida se o TLS TLS estiver ativo**. Isso significa que a comunicação com um servidor só é possível se o servidor suportar as medidas de criptografia necessárias para a transmissão segura. Com StartTLS, a conexão com o servidor de e-mail é estabelecida sem criptografia. Somente depois a criptografia é aplicada. Se não for possível aplicar a criptografia TLS, a troca de dados restante ocorrerá sem criptografia.

O SMTPS oferece um nível mais alto de segurança, enquanto o StartTLS temmelhor compatibilidade. Devido à sua compatibilidade, o StartTLS é geralmente a escolha preferida.

Etapa 4: Indique o destinatário do e-mail

Agora você pode designar os destinatá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 geralmente consiste em um assunto e um texto, que pode ser especificado como versões HTML e não HTML. É importante 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 facilmente attachments com o PHPMailer usando a função addAttachment função. Imagens, músicas, documentos, 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 é transferido 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 codificação de caracteres correta

É uma boa ideia ativar UTF-8 no PHPMailer para evitar a ocorrência de erros de exibição ao processarletras acentuadas de outros idiomas, especialmente ao usar anexos diferentes. Você pode fazer isso adicionando 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 solicitaçã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 necessário para enviar um e-mail contendo um anexo de imagem para um destinatá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
Este artigo foi útil?
Para melhorar a sua experiência, este site usa cookies. Ao acessar o nosso site, você concorda com nosso uso de cookies. Mais informações
Page top