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

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

A resposta curta: no Laravel, o SMTP Relay configura-se no ficheiro .env, sem tocar no código: servidor, porta 587, utilizador 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 registo 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 Ligação, 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 registo do Email Center: o e-mail tem de lá estar. Se aparecer, a mensagem diz quase sempre se é ligação, 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://UTILIZADOR:SENHA@SMTP_HOST:587. Se a senha tiver caracteres especiais, codifique-os para URL.
CodeIgniter, CakePHP e outras No ficheiro de configuração do e-mail: protocolo SMTP, servidor, porta 587, cifra TLS, utilizador 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 registo 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, Utilizador e Remetente

O SMTP Relay não envia: ligação, 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, registo 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 396,00 MT/mês (plano de 3 anos, com cupão)

Ver planos
Esta resposta foi útil? A sua resposta ajuda-nos a melhorar este artigo.