Par défaut, sous Windows on peut utiliser le paramètre SMTP du fichier php.ini pour envoyer des mails à l'aide de la fonction mail(). Le seul inconvéniant est que l'on ne peut pas utiliser un serveur SMTP qui nécessite une authentification.
On peut utiliser des classes php telles que phpMailer, mais quand on a juste besoin d'une simple fonction mail, c'est peu pratique. La solution consiste à utiliser sendmail sous Windows.
Si, si, c'est possible, la preuve !
Le paramétrage ci-dessous a été testé sur une distrib XAMPP mais je pense qu'elle doit fonctionner quelque soit la solution retenue.
Nous considérons que le dossier d'installation de XAMPP se trouve dans C:\xampplite. Aadaptez les chemins au besoin.
1/ Installation de sendmail sous Windows
Sendmail est déjà livré avec Xampp (dans le dossier C:\xampplite\sendmail) mais ne fonctionne pas correctement.
Nous allons donc télécharger la dernière version et remplacer la version actuelle dans C:\xampplite\sendmail
2/ Paramétrage de php.ini
Le fichier php.ini se trouve dans le dossier C:\xampplite\php
Rendez-vous dans la section [mail function] et modifiez-la comme suit :
[mail function] ; For Win32 only. ; http://php.net/smtp ;SMTP = localhost ; http://php.net/smtp-port ;smtp_port = 25 ; For Win32 only. ; http://php.net/sendmail-from ;sendmail_from = frederic@lesprost.fr ; For Unix only. You may supply arguments as well (default: "sendmail -t -i"). ; http://php.net/sendmail-path sendmail_path = "\"C:\xampplite\sendmail\sendmail.exe\" -t" ; Force the addition of the specified parameters to be passed as extra parameters ; to the sendmail binary. These parameters will always replace the value of ; the 5th parameter to mail(), even in safe mode. ;mail.force_extra_parameters = ; Add X-PHP-Originating-Script: that will include uid of the script followed by the filename mail.add_x_header = Off ; Log all mail() calls including the full path of the script, line #, to address and headers ;mail.log = "C:\xampplite\apache\logs\php_mail.log"
(Pensez à adapter le chemin de sendmail)
3/ Paramétrage de sendmail.ini
Le fichier sendmail.ini se trouve dans le dossier C:\xampplite\sendmail
Il faut éditer les paramètres suivants :
[sendmail] smtp_server=<adresse de votre serveur SMTP> smtp_port=<port du serveur SMTP (25 par défaut)> auth_username=<login de connexion> auth_password=<mot de passe de connexion>
Vous pouvez en profiter pour jeter un oeil aux autres paramètres qui pourront vous être utiles (expéditeur par défaut, activation des logs,...)
4/ Faisons un test
N'oubliez pas de redémarrer Apache pour prendre en compte les changements.
Ensuite, créez un script mail.php dans votre dossier source et lancez-le:
<? $to = "<email destinataire>"; $subject = "Essai de mail"; $body = "Coucou"; $headers = "From: <email expéditeur>" . "\r\n"; if (mail($to, $subject, $body, $headers)) { echo ("Message envoyé !"); } else { echo ("Message non envoyé..."); } ?>
Commentaires