Base de connaissances / Knowledge base

Expéditeur de mails avec PHP (17.10.07)
Certains courriels sont générés par des sites Internet. Afin que les opérateurs qui traitent ces mails puissent répondre à la bonne adresse de courrier électronique et que les éventuelles erreurs parviennent à qui de droit, il est important de connaître la nomenclature du paramétrage des adresses (expéditeur, etc) lors de l'envoi de mails via la fonction mail() de PHP.
Voyons d'abord la fonction mail():

mail ( string to, string subject, string message [, string additional_headers [, string additional_parameters]] )

Les trois premiers paramètres sont connus.

Le quatrième paramètre sert à ajouter des lignes d'entêtes. On s'en sert souvent pour ajouter les entêtes From et Reply-To. L'adresse mise en From sera l'expéditeur du mail et l'adresse en Reply-To, s'il y en a une, sera utilisée quand on répondra au mail. Notez que s'il n'y a pas de Reply-To mais qu'il y a un From, on enverra un mail à l'adresse From en répondant au mail ainsi reçu. Le but ici est que les gens ne répondent pas au serveur web qui envoie les mails! Notez enfin que s'il y a plusieurs entêtes, elles doivent être séparées par un CR+LF (soit "\r\n" en PHP); mais pas de CR+LF final.

Le cinquième paramètre sert à ajouter des paramètres directement au mailer (sendmail, chez SysCo). Nous recommandons d'utiliser l'option -f (f pour From; le From du 4e paramètre l'ajoute dans l'entête alors qu'ici on l'ajoute au niveau de la distribution du courriel) suivie directement (Attention à bien mettre le -f néanmoins!) de l'adresse voulue.

Ainsi, nous vous recommandons:
Si vous ne voulez mettre qu'une seule adresse qui doit servir de From et de Reply-To, utilisez
mail($to, $subject, $message, "From: monadresse@provider.ch", "-fmonadresse@provider.ch");

Si vous voulez un From différent d'un Reply-To
mail($to, $subject, $message, "From: monadresse@provider.ch\r\nReply-To: lautreadresse@mondomaine.ch", "-fmonadresse@provider.ch");

ou

mail($to, $subject, $message, "From: monadresse@provider.ch\r\nReply-To: lautreadresse@mondomaine.ch", "-flautreadresse@mondomaine.ch");