Como posso obter o remetente correto em PHP com mail()? smtp
Se o seu site envia e-mails com a função PHP mail(), o e-mail sai sem autenticação. O remetente técnico (Return-Path) é então, muitas vezes, a conta de sistema do seu pacote e não o seu próprio endereço. Por isso, o SPF e o DMARC não correspondem corretamente, o e-mail vai mais vezes parar ao spam e as mensagens de erro chegam a uma caixa de correio que ninguém consulta.
Por esse motivo, configure o seu site para enviar e-mails através de SMTP com autenticação, tal como o seu programa de e-mail. Assim, o seu próprio endereço passa a ser o remetente e o e-mail é tratado como correio normal do seu domínio.
Os dados para SMTP
- Servidor: o seu nome de domínio (jouwdomein.nl), se o seu site estiver alojado na WebOké, ou o nome do servidor do seu pacote, como linux2023.webawere.nl. Encontra-o em O meu WebOké, em Os meus produtos, na coluna Servidor.
- Porta: 465 com SSL/TLS, ou 587 com STARTTLS.
- Nome de utilizador: o endereço de e-mail completo de uma caixa de correio, de preferência uma caixa de correio separada para o site, como website@jouwdomein.nl.
- Palavra-passe: a palavra-passe dessa caixa de correio.
Utilize como remetente (From) o endereço dessa caixa de correio, ou um reencaminhador que reencaminhe para ela. O endereço de um visitante nunca deve ser colocado em From, mas sim em Reply-To. Caso contrário, o servidor recusa o e-mail ou este vai parar ao spam.
Exemplo com PHPMailer
Uma biblioteca muito utilizada é a PHPMailer. Pode instalá-la com o Composer (composer require phpmailer/phpmailer).
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require 'vendor/autoload.php';
$mail = new PHPMailer(true);
try {
// SMTP-instellingen
$mail->isSMTP();
$mail->Host = 'jouwdomein.nl';
$mail->Port = 465;
$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;
$mail->SMTPAuth = true;
$mail->Username = 'website@jouwdomein.nl';
$mail->Password = 'wachtwoord';
$mail->CharSet = 'UTF-8';
// Afzender, antwoordadres en ontvanger
$mail->setFrom('website@jouwdomein.nl', 'Website jouwdomein.nl');
$mail->addReplyTo('bezoeker@example.net');
$mail->addAddress('info@jouwdomein.nl');
// Bericht
$mail->Subject = 'Testbericht';
$mail->Body = 'Dit is een testmail verzonden via SMTP.';
$mail->send();
echo 'E-mail verzonden';
} catch (Exception $e) {
echo 'Versturen mislukt: ' . $mail->ErrorInfo;
}
Utiliza WordPress ou WooCommerce? Nesse caso, pode tratar disto com um plugin SMTP; consulte Enviar e-mails do WordPress e do WooCommerce de forma fiável através de SMTP. Para saber como proteger um formulário contra spam, leia Um formulário de contacto no seu site: enviar os campos por e-mail e evitar spam.
Quer saber mais? Siga o curso gratuito E-mail em ordem, lição 7.3 E-mail a partir do seu site e formulários.
Quer saber mais? Siga o curso gratuito de WordPress, lição 9.1 E-mail a partir do WordPress.
