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.
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/phpmailerbashImportante: 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";bashA 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);phpComo 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;phpVocê 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();
}phpEtapa 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;phpEm 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');phpEtapa 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");phpEtapa 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';phpEtapa 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
