PHP : Fonction Mail()

PHP

Voilà un petit souci que j’ai pu rencontrer avec la fonction mail() de PHP.
Il y a une méthode qui permet de modifier l’en-tête complet de l’émetteur en ajoutant l’option “-f expediteur” en paramètre de la fonction.

ex :

<?php
$entete = "MIME-Version: 1.0rn";
$entete .= "Content-Type: multipart/related; boundary="$delimiteur"rn";
$entete .= "rn";

mail(destinataire@toto.com,"sujet du message","message", "From: emetteur@toto.comrncc:copie@toto.comrnBcc:copie_cachee@toto.comrnReply-To: emetteur@toto.comrn".$entete, "-f emetteur@toto.com");
?>

Dans ce code, nous envoyons un message à destinaire@toto.com avec copie et copie cachée.
L’adresse qui apparaitra dans dans le message est celle définie en “From”
Le fait d’ajouter l’option “-f emetteur@toto.com” remplacera l’adresse du serveur qui envoi le message. (dans un script PHP ce sera généralement www-data@votredomaine) par emetteur@toto.com.
Cette adresse n’est visible du commun des mortels qu’en affichant la source complète du message.

Cette méthode est maintenant décelée et bloquée par les serveurs de mails tels que Google, qui compare l’adresse d’envoi avec le nom de domaine correspondant à l’adresse IP de votre serveur web executant le script PHP.
Ainsi si votre serveur web a une adresse comme http://www.tata.com et que vous souhaitez utiliser un script PHP pour envoyer un mail en utilisant l’option “-f emetteur@toto.com”, google découvrira que l’adresse émettrice ne correspond pas au nom de domaine et vous placera dans les spams avec ce message dans l’entête du mail :

(google.com: domain of transitioning emetteur@toto.com does not designate XXX.XXX.XXX.XXX as permitted sender)

Sinon il y a aussi...