Enviando e-mails em PHP com o GMail

Veja como utilizar a classe PHPMailer para enviar mensagens através dos servidores SMTP do GMail

05/02/2024

Enviando e-mails em PHP com o GMail

Enviando e-mails em PHP com o GMail

Introdução

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.

Ative o Acesso a Aplicativos Menos Seguros

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.

Baixe o PHPMailer mais recente

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.

Exemplo de Código: Enviando Mensagem Através do SMTP do Gmail

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.

Explicando o Código

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.

Incluindo Dependências

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;

Criando o Objeto

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);

Definindo Parâmetros do Servidor SMTP

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;

Definindo Dados de Autenticação

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';

Definindo Remetente e Destinatário

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');

Definindo Conteúdo da Mensagem

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>';

Enviando a Mensagem

Para enviar o e-mail configurado, usamos $mail->send();.

$mail->send();

Tratamento de Erros

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}";

}

Conclusão

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.

Domínios hospedados
Clientes satisfeitos