05/02/2024
Este tutorial mostra como enviar e-mails com PHP usando SMTP do Gmail, já que a função mail()
do PHP não permite envio autenticado por SMTP, exigido pelo Gmail para endereços @gmail.com
.
Usaremos o PHPMailer, que facilita o envio via SMTP autenticado, cumprindo com as políticas do Gmail e garantindo a entrega das mensagens.
Para enviar e-mails pelo PHPMailer usando SMTP do Gmail, primeiro é necessário modificar as configurações da sua conta Google. Ative a opção "Acesso a app menos seguro" nas configurações de segurança.
Lembre-se de usar uma senha forte em sua conta de e-mail, para evitar que ela possa ser usada indevidamente por terceiros.
Faça o download da última versão do PHPMailer. Após o download, extraia o conteúdo do arquivo master.zip
em uma pasta chamada PHPMailer
dentro do seu projeto.
Agora temos tudo o que é necessário para que o PHPMailer funcione corretamente.
O exemplo de código a seguir demonstra como enviar um e-mail com o assunto "Assunto Teste" de "seuemail@gmail.com" para "destinatario@exemplo.com.br":
<?php
require './PHPMailer/src/Exception.php';
require './PHPMailer/src/PHPMailer.php';
require './PHPMailer/src/SMTP.php';
use PHPMailer\PHPMailer\Exception;
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
$mail = new PHPMailer(true);
try {
$mail->isSMTP();
$mail->Host = 'smtp.gmail.com';
$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;
$mail->Port = 465;
$mail->SMTPAuth = true;
$mail->Username = 'seuemail@gmail.com';
$mail->Password = 'senha';
$mail->setFrom('seuemail@gmail.com', 'Nome do Remente');
$mail->addAddress('destinatario@exemplo.com.br');
$mail->isHTML(true);
$mail->Subject = 'Assunto Teste';
$mail->Body = 'Corpo da mensagem em <b>HTML</b>';
$mail->send();
echo 'Mensagem enviada com sucesso.';
} catch (Exception $e) {
echo "A mensagem não pôde ser enviada. Erro do PHPMailer: {$mail->ErrorInfo}";
}
?>
Substitua "seuemail@gmail.com" e "senha" pelas suas credenciais do Gmail, e ajuste o destinatário, assunto e corpo da mensagem conforme necessário.
Para tornar mais fácil a compreensão, vamos dividir o exemplo de código em partes específicas e explicar cada uma delas detalhadamente.
Primeiro, é necessário incluir as classes principais do PHPMailer no seu script. Isso é feito utilizando o comando require
para carregar os arquivos de Exception.php
, PHPMailer.php
, e SMTP.php
. Essas linhas preparam o ambiente incluindo as funcionalidades necessárias para o envio de e-mails, tratamento de exceções e comunicação SMTP. A seguir, utilizamos a declaração use
para importar as classes necessárias do namespace PHPMailer\PHPMailer, permitindo que as referenciemos diretamente pelo nome da classe em nosso código.
require './PHPMailer/src/Exception.php';
require './PHPMailer/src/PHPMailer.php';
require './PHPMailer/src/SMTP.php';
use PHPMailer\PHPMailer\Exception;
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
A criação do objeto $mail
é feita instanciando a classe PHPMailer
. Passando true
como argumento para o construtor, habilitamos a exceção para qualquer erro que possa ocorrer durante o processo de envio, permitindo um controle mais refinado sobre o tratamento de erros.
$mail = new PHPMailer(true);
Para enviar e-mails através do SMTP do Gmail, configuramos o PHPMailer para usar SMTP como protocolo de envio. O $mail->Host
é definido como 'smtp.gmail.com'
, que é o endereço do servidor SMTP do Gmail. Usamos PHPMailer::ENCRYPTION_SMTPS
para $mail->SMTPSecure
, indicando que a conexão deve ser criptografada usando SSL. A porta usada para SSL é a 465
. Essas configurações garantem que a comunicação com o servidor de e-mail seja segura e criptografada, cumprindo os requisitos do Gmail para conexão SMTP.
$mail->isSMTP();
$mail->Host = 'smtp.gmail.com';
$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;
$mail->Port = 465;
Após definir os parâmetros do servidor SMTP, precisamos autenticar nossa aplicação com o Gmail. Habilitamos a autenticação SMTP com $mail->SMTPAuth = true
. Em seguida, definimos $mail->Username
e $mail->Password
com nossas credenciais do Gmail, ou seja, o endereço de e-mail completo e a senha. Essas credenciais são essenciais para que o PHPMailer faça login no servidor SMTP do Gmail e tenha permissão para enviar e-mails em nome da sua conta.
$mail->SMTPAuth = true;
$mail->Username = 'seuemail@gmail.com';
$mail->Password = 'senha';
Configuramos o remetente com $mail->setFrom('seuemail@gmail.com', 'Nome do Remetente')
e adicionamos o destinatário usando $mail->addAddress('destinatario@exemplo.com.br')
. Isso indica de quem é o e-mail e para quem ele deve ser enviado.
$mail->setFrom('seuemail@gmail.com', 'Nome do Remetente');
$mail->addAddress('destinatario@exemplo.com.br');
O e-mail é marcado para usar HTML com $mail->isHTML(true)
. Definimos também o assunto com $mail->Subject = 'Assunto Teste'
e o corpo da mensagem em HTML com $mail->Body = 'Corpo da mensagem em <b>HTML</b>'
.
$mail->isHTML(true);
$mail->Subject = 'Assunto Teste';
$mail->Body = 'Corpo da mensagem em <b>HTML</b>';
Para enviar o e-mail configurado, usamos $mail->send();
.
$mail->send();
Usamos try
e catch
para capturar erros no envio de e-mails. Isso ajuda a identificar problemas como falhas de conexão ou erros de autenticação com o PHPMailer.
try {
// Código para enviar o e-mail
} catch (Exception $e) {
echo "A mensagem não pôde ser enviada. Erro do PHPMailer: {$mail->ErrorInfo}";
}
Neste artigo você aprendeu como enviar mensagens pelo GMail usando PHPMailer.
Caso esteja implementando o envio de dados de formulário por e-mail, recomendamos fortemente que leia também o artigo sobre proteção de formulários em PHP com CAPTCHA para evitar que seu script seja acessado indevidamente por robôs.