Neste guia, você aprenderá a configurar o envio de e-mails autenticados utilizando a biblioteca PHPMailer, através de uma conexão SMTP segura e autenticada, respeitando os limites e as políticas de envio permitidos pela nossa infraestrutura.
IMPORTANTE: O envio de e-mails em massa caracterizado como Spam é expressamente proibido em nossa rede. O uso do PHPMailer não altera ou elimina os limites de envio e as políticas antispam aplicáveis ao serviço.
Para mais informações, consulte:
O que é PHPMailer?
O PHPMailer é uma biblioteca para PHP utilizada principalmente para o envio de e-mails através do protocolo SMTP. Ela oferece recursos para autenticação SMTP, conexão segura utilizando TLS, definição de remetentes e destinatários, envio de mensagens em HTML, anexos, entre outros recursos. O PHPMailer é uma alternativa mais completa e flexível ao uso direto da função nativa mail() do PHP, especialmente quando é necessário realizar autenticação em um servidor SMTP.
Configurando o envio de e-mails autenticados
1.Instalação do PHPMailer
A forma recomendada de instalar o PHPMailer é utilizando o Composer.
No diretório do seu projeto, execute:
composer require phpmailer/phpmailer
Após a instalação, o carregamento da biblioteca poderá ser realizado através do autoload.php gerado pelo Composer.
NOTA: Caso o Composer não esteja disponível no ambiente, também é possível realizar a instalação manual da biblioteca a partir do repositório oficial do PHPMailer. Repositório oficial do PHPMailer no GitHub
2. Configurando o envio SMTP
Crie ou edite o arquivo PHP responsável pelo envio de e-mails. O exemplo abaixo utiliza SMTP autenticado através da porta 587 com STARTTLS, que é o método recomendado para conexões SMTP autenticadas:
<?php
require __DIR__ . '/vendor/autoload.php';
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
$mail = new PHPMailer(true);
try {
// Configurações do servidor SMTP
$mail->isSMTP();
$mail->Host = 'mail.seudominio.com.br';
$mail->SMTPAuth = true;
$mail->Username = 'seuemail@seudominio.com.br';
$mail->Password = 'suasenha';
// Conexão segura utilizando STARTTLS
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->Port = 587;
// Configurações do remetente e destinatário
$mail->setFrom('seuemail@seudominio.com.br', 'Seu Nome');
$mail->addAddress('destinatario@dominio.com.br', 'Nome do Destinatário');
// Conteúdo da mensagem
$mail->isHTML(true);
$mail->Subject = 'Assunto do e-mail';
$mail->Body = '<h1>Olá!</h1><p>Esta é uma mensagem de teste enviada utilizando o PHPMailer.</p>';
$mail->AltBody = 'Olá! Esta é uma mensagem de teste enviada utilizando o PHPMailer.';
// Envio da mensagem
$mail->send();
echo 'Mensagem enviada com sucesso!';
} catch (Exception $e) {
echo "Erro ao enviar mensagem: {$mail->ErrorInfo}";
}
3. Parâmetros da configuração SMTP
Os principais parâmetros utilizados no exemplo são:
Endereço do servidor SMTP utilizado para o envio:
host
Habilita a autenticação SMTP:
SMTPAuth
Usuário utilizado para autenticação:
Username
Senha da conta de e-mail:
Password
Define o método de criptografia utilizado na conexão:
SMTPSecure
Porta utilizada pelo servidor SMTP:
Port
Define o endereço e o nome do remetente:
setFrom()
Define o endereço e o nome do remetente:
addAddress()
4. Porta e criptografia
Recomendamos utilizar a porta 587 com STARTTLS para conexões SMTP autenticadas.
No PHPMailer, essa configuração é feita através de:
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->Port = 587;
NOTA: A porta 465, que utiliza TLS desde o início da conexão, deve ser utilizada somente em último caso, quando o servidor SMTP de destino não disponibilizar a porta 587 ou exigir especificamente esse método de conexão.
Quando for necessário utilizar a porta 465, a configuração deverá ser:
$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;
$mail->Port = 465;
5. Usuário e senha
O Username e o Password devem corresponder a uma conta de e-mail válida e autorizada a realizar o envio através do servidor SMTP.
Exemplo:
$mail->Username = 'seuemail@seudominio.com.br';
$mail->Password = 'suasenha';
IMPORTANTE: Evite manter senhas diretamente no código-fonte, principalmente em aplicações que utilizam controle de versão, como Git. Sempre que possível, armazene as credenciais em variáveis de ambiente ou em um mecanismo seguro de gerenciamento de configurações.
6. Testando o envio
Após realizar as configurações, execute a aplicação ou o script responsável pelo envio.
Em caso de sucesso, o exemplo apresentado exibirá:
Mensagem enviada com sucesso!
Caso ocorra uma falha, o PHPMailer exibirá uma mensagem contendo informações sobre o erro:
Erro ao enviar mensagem: ...
Essas informações podem ajudar a identificar problemas relacionados a:
- Usuário ou senha incorretos;
- Servidor SMTP incorreto;
- Porta SMTP bloqueada;
- Falha na negociação TLS;
- Certificado inválido;
- Falha de conexão com o servidor SMTP;
- Remetente não autorizado;
- Destinatário rejeitado pelo servidor;
- Limites de envio atingidos.
Boas práticas
Ao utilizar o PHPMailer para envio de e-mails, recomendamos:
- Utilizar sempre SMTP autenticado.
- Preferir a porta 587 com STARTTLS.
- Utilizar a porta 465 somente quando necessário.
- Não armazenar senhas diretamente no código-fonte.
- Utilizar uma conta de e-mail válida para autenticação.
- Não utilizar contas ou credenciais de terceiros sem autorização.
- Respeitar os limites de envio definidos para o serviço.
- Não utilizar a aplicação para envio de Spam ou mensagens não solicitadas.
- Manter o PHPMailer atualizado para receber correções de segurança e melhorias.
Documentação oficial
Para mais informações, consulte a documentação do PHPMailer.
AVISO LEGAL: Os procedimentos descritos neste documento devem ser executados de acordo com o contexto de cada sistema, de forma a evitar impactos negativos à segurança, disponibilidade, integridade e privacidade de dados. A Nevolus se reserva o direito de modificar a qualquer tempo e sem aviso prévio as informações aqui apresentadas a fim de refletir o lançamento de novos serviços, atualizações físicas e operacionais, e evolução do estado-da-arte da tecnologia.
