Configuração de E-mail com Mailtrap e Gmail em Variáveis de Ambiente(avançado)

Erro: "Falha ao autenticar no servidor SMTP" ou "Configuração de servidor de e-mail"

Esse guia explica como configurar corretamente o envio de e-mails usando os servidores SMTP do Mailtrap para testes e Gmail para produção. Você pode alternar entre esses servidores de e-mail com base nas variáveis de ambiente.

Passo 1: Configuração de Mailtrap (para testes)

No arquivo .env, adicione as seguintes variáveis para configurar o Mailtrap:
MAIL_MAILER=mailtrap
MAIL_HOST="sandbox.smtp.mailtrap.io"
MAIL_PORT=587
MAIL_USERNAME="15397f94b9febc"
MAIL_PASSWORD="37add711a2403b"
MAIL_ENCRYPTION="tls"
MAIL_FROM_ADDRESS="contact@example.com"
MAIL_FROM_NAME="${APP_NAME}"
 

Passo 2: Configuração do Gmail (para produção)

Se você deseja enviar e-mails com o Gmail, adicione essas variáveis ao seu .env:

GMAIL_MAILER=smtp
GMAIL_HOST="smtp.gmail.com"
GMAIL_PORT=587
GMAIL_USERNAME="seuemail@gmail.com"
GMAIL_PASSWORD="sua_senha_do_gmail"
GMAIL_ENCRYPTION="tls"
GMAIL_FROM_ADDRESS="seuemail@gmail.com"
GMAIL_FROM_NAME="${APP_NAME}"
 

Passo 3: Alternando entre Mailtrap e Gmail

No seu código, você pode alternar entre o Mailtrap e o Gmail usando a variável MAIL_MAILER. Exemplo de configuração no Laravel:

// Verifique se está utilizando o Mailtrap ou Gmail
if (env('MAIL_MAILER') === 'mailtrap') {
   $mailConfig = [
       'driver' => env('MAIL_MAILER'),
       'host' => env('MAIL_HOST'),
       'port' => env('MAIL_PORT'),
       'username' => env('MAIL_USERNAME'),
       'password' => env('MAIL_PASSWORD'),
       'encryption' => env('MAIL_ENCRYPTION'),
       'from' => [
           'address' => env('MAIL_FROM_ADDRESS'),
           'name' => env('MAIL_FROM_NAME'),
       ],
   ];
} elseif (env('GMAIL_MAILER') === 'smtp') {
   $mailConfig = [
       'driver' => env('GMAIL_MAILER'),
       'host' => env('GMAIL_HOST'),
       'port' => env('GMAIL_PORT'),
       'username' => env('GMAIL_USERNAME'),
       'password' => env('GMAIL_PASSWORD'),
       'encryption' => env('GMAIL_ENCRYPTION'),
       'from' => [
           'address' => env('GMAIL_FROM_ADDRESS'),
           'name' => env('GMAIL_FROM_NAME'),
       ],
   ];
}

// Aqui, $mailConfig seria passado para a configuração de envio de e-mails
 

Observações:

Mailtrap para testes: O Mailtrap é uma ótima opção para testar o envio de e-mails sem enviar e-mails reais. Utilize-o no ambiente de desenvolvimento ou teste.

Gmail para produção: No ambiente de produção, configure o Gmail ou outro serviço SMTP real para garantir o envio correto de e-mails.

Alternância fácil: Com essa configuração, você pode alternar entre Mailtrap e Gmail sem alterações significativas no código, apenas modificando as variáveis de ambiente.

Com esse guia, você pode facilmente configurar e alternar entre ambientes de testes e produção para o envio de e-mails.

 

O motivo de ser considerado um guia avançado inclui os seguintes pontos:

Manipulação de variáveis de ambiente: O uso de arquivos .env para configurar servidores SMTP requer compreensão de como variáveis de ambiente funcionam e sua aplicação em sistemas de desenvolvimento.

Ambientes de produção e teste: A alternância entre ambientes de teste (Mailtrap) e produção (Gmail) requer conhecimento sobre como configurar e gerenciar diferentes configurações de e-mail dependendo do estágio de desenvolvimento.

Configuração de código: O guia envolve configurar o código para ler e utilizar essas variáveis de ambiente corretamente, o que pode ser um pouco mais desafiador para iniciantes.

Usamos cookies para personalizar sua experiência. Ao continuar visitando este site, você concorda com o uso de cookies

Mais