Conseils:
- Utiliser des retours à la ligne pour les entêtes: \r\n en utilisant des guillemets double " sinon il seront pas pris en compte, ex:
$Entetes = 'MIME-Version: 1.0\r\n'; //ne fonctionnera pas
$Entetes = "MIME-Version: 1.0\r\n";//fonctionnera
//une version plus propore consiste à créer un tableau $Entetes que vous "imploderez" de \r\n :
$Entetes = [];
$Entetes[] = "MIME-Version: 1.0";
$Entetes[] = "Content-type: text/html; charset=UTF-8";
$Entetes[] = "etc..";
//puis:
$Entetes = implode("\r\n",$Entetes);
//une autre méthode avec la concaténation:
$Entetes =
"MIME-Version: 1.0\r\n" .
"Content-type: text/html; charset=UTF-8\r\n" .
"etc..\r\n";
- Si utilisation d'une adresse en "noreply", il faut quelle soit du même domaine d'où est envoyé le mail (et l'adresse mail qui envoi aussi)- Définir l'entête Content-Type en "text/html" si du HTML est inclus (comme c'est souvent le cas)
- ?
J'arrive à un score de 8.7 avec ma fonction mail()
Code pour envoyer un mail correctement:
//configuration
$mail_expediteur="mon@email";
$mail_destinataire="son@email";
$titre="Titre du mail";
$msg="Contenu du mail HTML avec <strong>des balises</strong> HTML";
//entêtes
$Entetes=[];
$Entetes[] = "MIME-Version: 1.0";
$Entetes[] = "Content-type: text/html; charset=UTF-8";
$Entetes[] = "From: Mon site <$mail_expediteur>";
$Entetes[] = "Reply-To: Mon site <$mail_expediteur>";
//envoi
if(mail($mail_destinataire,"=?UTF-8?B?".base64_encode($titre)."?=",$msg,implode("\r\n",$Entetes))){
echo "ok";
} else{
echo "pas ok";
}
Il me reste à utiliser DKIM (Le -1 dans l'image dessous), List-Unsubscribe et améliorer les recommandations "SpamAssassin" pour l'améliorer

