Correio eletrónico
mail() do PHP: o que significa o resultado e quando usar SMTP
Função mail() do PHP
O PHP permite entregar uma mensagem ao transporte de correio local através de mail(). Defina sempre um remetente válido e controlado pela aplicação:
$headers = ['From' => 'web@tudominio.com']; $accepted = mail('email@destino.com', 'Título email', 'Mensaje', $headers);
Um resultado true apenas confirma que o sistema local aceitou a mensagem para a processar; não prova que o servidor destinatário a tenha aceitado nem que tenha chegado à caixa de entrada.
Problemas causados pelo uso de mail()
O ponto fraco de um envio difícil de diagnosticar é a falta de informação sobre o que acontece depois de o entregar ao transporte. Antes de substituir código, verifique se a mensagem foi aceite, rejeitada ou ficou pendente.
A função permite construir o cabeçalho do remetente sem autenticar por si mesma que a aplicação controla esse domínio. Nunca aceite um valor From fornecido livremente pelo visitante; use um endereço fixo do seu domínio e coloque o endereço do utilizador em Reply-To apenas depois de o validar.
Os fornecedores verificam mecanismos como SPF, DKIM e DMARC, além da reputação e do formato da mensagem. mail() não configura por si só esses mecanismos nem informa do resultado final da entrega.
Uma configuração incompleta pode provocar rejeições ou classificações como spam, mas o resultado deve ser verificado no acompanhamento da entrega e nos cabeçalhos de um envio real.
A adequação de mail() não depende de o destinatário ser próprio ou externo, mas da forma como o transporte local está configurado, da autenticação resultante e da capacidade de observar erros e devoluções. Para mensagens importantes, use um transporte que permita autenticar, registar o resultado e controlar o remetente.
Emails enviados com autenticação SMTP
Uma alternativa é o envio através de SMTP autenticado com uma conta real criada no cPanel. Use o hostname com certificado válido indicado em Conectar dispositivos, TLS obrigatório e a porta segura recomendada. O From deve ser um endereço controlado e alinhado com a conta ou o domínio autenticado. O SMTP melhora o controlo e a rastreabilidade, mas também não garante que o recetor aceite a mensagem.
Não mude o remetente para uma conta do Gmail como solução genérica. O Gmail pode ser usado através da sua configuração SMTP ou OAuth quando a aplicação o admite, mas um erro 401 corresponde a essa autorização e deve ser resolvido em separado; não diagnostica o transporte local de mail() nem a entrega ao destinatário.
Muitas aplicações incluem uma opção para configurar SMTP. No Joomla pode selecionar esse transporte e introduzir o servidor, a cifragem e as credenciais da conta. Verifique o resultado com um envio real da aplicação.
No WordPress pode utilizar um plugin SMTP compatível, como o Easy WP SMTP.
Para desenvolvimentos próprios, pode integrar uma biblioteca mantida como o PHPMailer
Preparar a mudança para SMTP
Guarde as credenciais na configuração privada da aplicação, fora do repositório e do diretório público. Use uma biblioteca mantida, validação do certificado e a porta e o modo TLS indicados pelo fornecedor. Não desative a verificação do certificado para esconder um erro de ligação.
Envie um teste representativo e registe a data, o destinatário e o identificador da mensagem sem guardar palavras-passe. Verifique o acompanhamento da entrega e o resultado no recetor. Se a sua aplicação repete tentativas, evite gerar duplicados quando o primeiro envio já foi aceite mas a resposta se perdeu.
Não introduza dados do formulário sem validação em destinatários ou cabeçalhos. Para responder ao visitante, valide o seu endereço e use-o como Reply-To, mantendo um From que a sua aplicação controle.
Também lhe pode ser útil
- Adicionar um remetente seguro no SpamAssassin Indica como reduzir no SpamAssassin a pontuação de um endereço remetente concreto e explica porque é...
- Alterações nos requisitos para o envio de email para o Gmail e o Yahoo Resume os requisitos atuais do Gmail e do Yahoo sobre autenticação, DNS, TLS, reputação e cancelamen...
- Autenticar um domínio da Hostsuar no Brevo Explica como copiar para a zona DNS autoritativa os registos que o Brevo fornece, evitar duplicados...
- BoxTrapper: verificação de remetentes e revisão da fila Descreve como o BoxTrapper retém remetentes desconhecidos até serem verificados e como gerir as suas...
Algo não bate certo ou mudou? Diga-nos e revemos.