SMTP Relay no Laravel e em outras frameworks PHP: as configurações do .env e o primeiro e-mail de teste

PHP e Programação·· 64 visualizações· 3 min de leitura

A resposta curta: no Laravel, o SMTP Relay configura-se no arquivo .env, sem tocar no código: servidor, porta 587, usuário e senha da credencial, e um remetente do domínio verificado. Limpa-se a cache da configuração, envia-se um e-mail de teste pelo tinker e confirma-se no registro do Email Center. Nas outras frameworks a ideia é a mesma, só muda o nome das variáveis.

O .env do Laravel

MAIL_MAILER=smtp
MAIL_HOST=SMTP_HOST
MAIL_PORT=587
MAIL_ENCRYPTION=tls
MAIL_USERNAME=SMTP_USER
MAIL_PASSWORD=SMTP_PASSWORD
MAIL_FROM_ADDRESS=no-reply@yourcompany.com
MAIL_FROM_NAME="${APP_NAME}"

Troque SMTP_HOST pelo servidor do cartão Link, e SMTP_USER e SMTP_PASSWORD pelos dados da credencial. Nas versões mais recentes do Laravel a linha MAIL_ENCRYPTION deixou de ser lida: com a porta 587 o STARTTLS é negociado sozinho, e para a porta 465 escreve-se MAIL_SCHEME=smtps.

O primeiro e-mail de teste

php artisan config:clear
php artisan tinker
>>> Mail::raw('Teste do SMTP Relay', fn ($m) => $m->to('voce@exemplo.com')->subject('Teste'));

Se não aparecer erro, abra o registro do Email Center: o e-mail tem de lá estar. Se aparecer, a mensagem diz quase sempre se é link, TLS, autenticação ou remetente: veja os problemas mais comuns.

Outras frameworks

Framework Onde se configura
Symfony Na variável MAILER_DSN, no formato smtp://USUÁRIO:SENHA@SMTP_HOST:587. Se a senha tiver caracteres especiais, codifique-os para URL.
CodeIgniter, CakePHP e outras No arquivo de configuração do e-mail: protocolo SMTP, servidor, porta 587, cifra TLS, usuário e senha.
PHP sem framework Com o PHPMailer: veja enviar com o PHPMailer. Porque não usar a função mail(): mail() ou SMTP.
O .env não pode ficar à vista. Deve estar fora da pasta pública do site e fora do repositório. Um .env que se abre no navegador entrega a senha da credencial a qualquer pessoa: se isso aconteceu, veja senha exposta.
Envie pela fila. Uma página que espera pelo servidor SMTP antes de responder fica lenta. No Laravel, use Mail::queue() ou classes com ShouldQueue, e um processo php artisan queue:work a correr.

A aplicação continua sem enviar? Abra um pedido com a mensagem de erro do registro da aplicação, sem a senha.

Abrir pedido de suporte

VEJA TAMBÉM

Enviar e-mail a partir do seu código com o PHPMailer

Enviar e-mail a partir do PHP: mail() ou SMTP

Enviar pelo SMTP Relay a partir de Node.js e Python: Nodemailer e smtplib, com STARTTLS

SMTP Relay em qualquer programa: o que querem dizer Servidor, Porta, Cifra, Usuário e Remetente

O SMTP Relay não envia: link, TLS, autenticação, remetente e destinatário, um a um

Usar o SMTP Relay e a API de e-mail ao mesmo tempo: os mesmos domínios, registro e bloqueados

PRODUTO RECOMENDADO

E-mail profissional no seu domínio

Caixas com o nome da sua empresa, sem publicidade, com filtro de spam. desde R$ 36,30/mês (plano de 3 anos, com cupom)

Ver planos
Esta resposta foi útil? Sua resposta nos ajuda a melhorar este artigo.