Executando verificação de segurança...
1

📧 Como Enviar E-mails Usando PHPMailer e Gmail no XAMPP (Ambiente de Desenvolvimento & Produção)

Enviar e-mails é essencial em muitas aplicações web. Neste guia completo, você vai aprender a configurar PHPMailer no ambiente de desenvolvimento com XAMPP e como fazer a transição correta para produção, com foco em segurança e boas práticas.

📦 Instalação do PHPMailer

Independente do ambiente, o primeiro passo é instalar a biblioteca via Composer:

composer require phpmailer/phpmailer

🧪 Ambiente de Desenvolvimento com XAMPP

1. Configuração de sendmail do xampp, ativado-o na instalação.

Na etapa de instalação do xampp é importante deixar a caixinha FakeSendmail selecionada igual na imagem abaixo:

2. Configurando o php.ini

Edite o arquivo:

C:\xampp\php\php.ini

Localize a seção [mail function] e altere:

[mail function]
SMTP=smtp.gmail.com
smtp_port=587
sendmail_from[email protected]
sendmail_path="\"C:\xampp\sendmail\sendmail.exe\" -t"

Dica: Substitua [email protected] pelo seu e-mail real.

3. Configurando o sendmail.ini

Abra:

C:\xampp\sendmail\sendmail.ini

Troque o conteúdo do arquivo sendmail.ini por:

[sendmail]
smtp_server=smtp.gmail.com
smtp_port=587
smtp_ssl=tls
auth_username[email protected]
auth_password=sua-senha-de-app-do-gmail

✅ Use sempre uma senha de app gerada na sua conta Google:
Gerar senha de app
Exemplo de uma senha de APP do gmail: erfi yeod uyua wiag

4. Script PHP para Teste

Crie um arquivo enviar-email.php:

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require 'vendor/autoload.php';

$mail = new PHPMailer(true);

try {
    $mail->isSMTP();
    $mail->Host = 'smtp.gmail.com';
    $mail->SMTPAuth = true;
    $mail->Username = '[email protected]';
    $mail->Password = 'sua-senha-de-app-do-gmail';
    $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
    $mail->Port = 587;

    $mail->setFrom('[email protected]', 'Seu Nome');
    $mail->addAddress('[email protected]');

    $mail->isHTML(true);
    $mail->Subject = 'Teste PHPMailer';
    $mail->Body = '<b>Funcionando!</b>';

    $mail->send();
    echo 'E-mail enviado com sucesso!';
} catch (Exception $e) {
    echo "Erro ao enviar e-mail: {$mail->ErrorInfo}";
}
?>

Execute via terminal:

php enviar-email.php

🚀 Como Configurar em Ambiente de Produção

Em produção, não usamos sendmail.exe nem configuramos o php.ini diretamente. Em vez disso:

✅ O que muda:

AspectoDesenvolvimento (XAMPP)Produção (Servidor Real)
SMTPGmail (via sendmail.exe)Gmail, Amazon SES, Mailgun, SMTP próprio
Configuração de e-mailphp.ini + sendmail.iniSomente via PHPMailer (código PHP)
Armazenamento de credenciaisHardcoded no script (ruim!)Variáveis de ambiente (.env) ou secrets vault
SegurançaBásicaObrigatório TLS/SSL e senhas protegidas

📁 Exemplo com Variáveis de Ambiente

Nunca exponha sua senha no código! Use .env ou similar com vlucas/phpdotenv.

# .env
[email protected]
MAIL_PASSWORD=sua-senha-de-app

No código PHP:

$dotenv = Dotenv\Dotenv::createImmutable(__DIR__);
$dotenv->load();

$mail->Username = $_ENV['MAIL_USERNAME'];
$mail->Password = $_ENV['MAIL_PASSWORD'];

🛡️ Regras de Segurança em Produção

  • ✅ Sempre use STARTTLS ou SMTPS (porta 465);
  • ❌ Nunca exponha senhas no código;
  • ✅ Use logs para registrar falhas, mas nunca exiba erros para o usuário final;
  • ✅ Configure SPF/DKIM/DMARC no domínio se usar e-mails personalizados.

✅ Conclusão

Agora você está preparado para enviar e-mails com PHPMailer tanto em ambientes locais com XAMPP, quanto em servidores de produção seguros. Evite práticas inseguras como senhas no código e use serviços confiáveis de SMTP para garantir entrega e reputação.

🔗 Recursos úteis

Carregando publicação patrocinada...
1

Interessante o post, mas me admira o XAMPP ainda existir. Tem alguns anos já que trabalhar com docker, containers e devContainers é super simples, além de poder se criar o mesmo ambiente que a produção.