Salut.
Je déterre ce post, mais je pense que cela pourra servir à d'autres.
Le but du jeu est de spécifier proprement l'adresse mail de l'expéditeur.
Tout d'abord, il faut écrire le header du mail.
$headers = "Content-type: text/\r\nFrom: " . $mail_expediteur . "\r\n";
Mais cela ne suffit pas. Deux solutions.
- Sous windows
La fonction mail() utilise le paramètre sendmail_from du php.ini.
Dans ce cas, on peut le changer dynamiquement via le ini_set() :
1 2 3
|
ini_set("sendmail_from", $mail_expediteur);
mail($mail_destinataire, $sujet_du_mail, $corps_du_mail, $headers); |
- Sous linux
Dans ce cas, la fonction mail() utilise le paramètre sendmail_path, qui localise le programme sendmail installé sur la machine.
On peut lui spécifier l'expediteur dans le php.ini de la manière suivante :
sendmail_path = /usr/sbin/sendmail -t -i -f expediteur@toto.fr
Malheureusement pour nous, ce paramètre ne peut être changé dynamiquement avec un ini_set() (sendmail_path est PHP_INI_SYSTEM).
Du coup, on est obligé de faire autrement. Heureusement, la fonction mail() peut accepter un 5ème paramètre, passé en ligne de commande à sendmail cf. la doc.
Ce qui donne :
mail($destinataire, $sujet, $corps, $headers, "-f".$mail_expediteur);
Et voilà. Avec ça, on est capable de spécifier proprement l'adresse de l'expéditeur et d'éviter les filtres antispam.
Partager