Biblioteca PHPMailer: envio profissional de email em PHP
O envio de emails é uma das funções principais de qualquer aplicação web moderna. A função nativa do PHP mail() muitas vezes não é suficientemente flexível e segura: ela não suporta autenticação SMTP, criptografia TLS/SSL, envio de emails HTML com anexos e nem sempre funciona corretamente em hospedagens compartilhadas. A solução para esses problemas é a biblioteca PHPMailer, que se tornou o padrão de facto para envio de email em PHP.
O que é PHPMailer?
PHPMailer é uma biblioteca poderosa e fácil de usar para enviar emails a partir de scripts PHP. Ela suporta:
- Envio através de servidor SMTP (Gmail, Yandex, Mail.ru, email corporativo);
- Criptografia TLS e SSL;
- Emails HTML com anexos (imagens, PDFs, documentos);
- Codificação UTF-8 e suporte a qualquer idioma (português, chinês, etc.);
- Texto alternativo (plain-text) para clientes de email sem suporte a HTML;
- Assinatura DKIM e SPF para proteção contra spam;
- Funcionamento via sendmail local ou mail() integrado como fallback.
Instalação do PHPMailer
A maneira mais simples é através do Composer. No terminal, execute o comando na raiz do seu projeto:
composer require phpmailer/phpmailerSe o Composer não for utilizado, você pode baixar o arquivo do GitHub e incluir os arquivos manualmente:
require_once '/caminho/para/PHPMailer/src/PHPMailer.php';require_once '/caminho/para/PHPMailer/src/SMTP.php';require_once '/caminho/para/PHPMailer/src/Exception.php';Exemplo básico de envio de email via SMTP do Gmail
Vamos considerar a configuração mínima para enviar um email através do servidor SMTP do Gmail. Atenção: para funcionar, será necessário criar uma senha de aplicativo nas configurações da sua conta Google (ou usar a opção menos segura de "acesso a aplicativos menos seguros").
<?phpuse PHPMailer\\PHPMailer\\PHPMailer;use PHPMailer\\PHPMailer\\SMTP;use PHPMailer\\PHPMailer\\Exception;
require 'vendor/autoload.php';
$mail = new PHPMailer(true);
try { // Configurações do servidor $mail->SMTPDebug = SMTP::DEBUG_OFF; // Depuração (0 - desligado, 2 - detalhado) $mail->isSMTP(); // Usar SMTP $mail->Host = 'smtp.gmail.com'; // Servidor SMTP $mail->SMTPAuth = true; // Ativar autenticação $mail->Username = 'seu-email@gmail.com'; // Login SMTP $mail->Password = 'sua-senha-de-app'; // Senha SMTP (senha de aplicativo) $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; // SSL $mail->Port = 465; // Porta para SSL (587 para TLS)
// Remetente e destinatário $mail->setFrom('from@example.com', 'Nome do remetente'); $mail->addAddress('to@example.com', 'Nome do destinatário'); // Pode adicionar vários $mail->addReplyTo('reply@example.com', 'Responder');
// Anexos (opcional) $mail->addAttachment('/caminho/para/arquivo.pdf', 'Nome.pdf');
// Conteúdo do email $mail->isHTML(true); // Formato HTML $mail->Subject = 'Olá do PHPMailer!'; $mail->Body = '<b>Este é um email HTML</b> com texto em português.'; $mail->AltBody = 'Este é o texto alternativo para clientes de email sem suporte a HTML.';
$mail->send(); echo 'Email enviado com sucesso';} catch (Exception $e) { echo "Erro: {$mail->ErrorInfo}";}?>Envio via Yandex Mail
Para o Yandex Mail, os parâmetros mudam ligeiramente. Importante: nas configurações da caixa de correio, é necessário permitir o acesso via protocolo IMAP/SMTP e criar uma senha de aplicativo (se a autenticação de dois fatores estiver ativada).
$mail