Comment obtenir le bon expéditeur avec mail() en PHP ? smtp
Si votre site web envoie des e-mails avec la fonction PHP mail(), ces e-mails partent sans authentification. L'expéditeur technique (Return-Path) est alors souvent le compte système de votre hébergement, et non votre propre adresse. Par conséquent, SPF et DMARC ne sont pas correctement validés, les e-mails arrivent plus souvent dans les spams et les messages d'erreur aboutissent dans une boîte de réception que personne ne consulte.
Faites donc envoyer les e-mails de votre site web via SMTP avec authentification, comme votre logiciel de messagerie. Votre propre adresse devient alors l'expéditeur et l'e-mail est traité comme un e-mail normal de votre domaine.
Les paramètres SMTP
- Serveur : votre nom de domaine (votredomaine.fr) si votre site web est hébergé chez WebOké, ou le nom du serveur de votre hébergement, par exemple linux2023.webawere.nl. Vous le trouverez dans Mon WebOké, sous Mes produits, dans la colonne Serveur.
- Port : 465 avec SSL/TLS, ou 587 avec STARTTLS.
- Nom d'utilisateur : l'adresse e-mail complète d'une boîte de réception, de préférence une boîte distincte réservée au site web, par exemple website@votredomaine.fr.
- Mot de passe : le mot de passe de cette boîte de réception.
Utilisez comme expéditeur (From) l'adresse de cette boîte de réception, ou un forwarder qui redirige vers celle-ci. Ne placez jamais l'adresse d'un visiteur dans From, mais dans Reply-To. Sinon, le serveur refusera l'e-mail ou celui-ci arrivera dans les spams.
Exemple avec PHPMailer
Une bibliothèque très utilisée est PHPMailer. Vous l'installez avec 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 = 'votredomaine.fr';
$mail->Port = 465;
$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;
$mail->SMTPAuth = true;
$mail->Username = 'website@votredomaine.fr';
$mail->Password = 'wachtwoord';
$mail->CharSet = 'UTF-8';
// Afzender, antwoordadres en ontvanger
$mail->setFrom('website@votredomaine.fr', 'Website votredomaine.fr');
$mail->addReplyTo('bezoeker@example.net');
$mail->addAddress('info@votredomaine.fr');
// 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;
}
Vous utilisez WordPress ou WooCommerce ? Dans ce cas, vous configurez cela avec une extension SMTP, consultez Envoyer des e-mails de manière fiable depuis WordPress et WooCommerce via SMTP. Pour savoir comment protéger un formulaire contre le spam, lisez Un formulaire de contact sur votre site web : envoyer les champs par e-mail et éviter le spam.
Envie d'en savoir plus ? Suivez le cours gratuit Une messagerie bien organisée, leçon 7.3 Les e-mails envoyés depuis votre site web et les formulaires.
Envie d'en savoir plus ? Suivez le cours WordPress gratuit, leçon 9.1 Les e-mails depuis WordPress.
