picture picture
septembre 19, 2017 PHP 19 Commentaires

Envoyer des e-mails depuis votre ordinateur avec WampServer

Tout développeur qui se respecte a eu un jour (au moins !) besoin d’envoyer des e-mail depuis un site en développement local. Ne serait-ce que pour  tester la mise en forme du sacro-saint formulaire de contact…

Ceux qui utilisent la plateforme de développement web sous Windows WampServer ont pu constater qu’elle n’intègre plus par défaut de serveur d’envoi des e-mails. L’envoi d’un e-mail génère au mieux : rien du tout; au pire : un message d’erreur (Failed to connect to mailserver at « localhost » port 25, verify your « SMTP » and « smtp_port » setting in php.ini…  etc.)

Il existe une solution simple et efficace : le serveur SMTP ( (Simple Mail Transfer Protocol)  Fake Sendmail for Windows !

1ère étape :

Télécharger les fichiers sur le site de l’éditeur, ou ici. Notez qu’il n’y a plus de mise à jour, mais l’utilisation étant locale les problèmes de sécurité sont donc secondaires.

2ème étape :

Dézipper l’archive et installer les fichiers extraits sur la racine de votre serveur, c’est à dire  dans le dossier […]/wamp/sendmail (que vous aurez préalablement créé)

3ème étape :

Sendmail a besoin d’un serveur SMTP pour fonctionner, il va donc vous falloir éditer le fichier  [...]/wamp/sendmail/sendmail.ini avec votre éditeur de texte préféré, pour le configurer avec le SMTP de votre boite e-mail.
Dans l’exemple suivant le SMTP est celui celui d’une boite Gmail, mais vous pouvez utiliser ceux de n’importe quelle autre boîte (smtp.free.fr / smtp.orange.fr / etc.)
Les champs à renseigner sont les suivants :

;smtp_server=mail.mydomain.com
smtp_server=smtp.gmail.com

; smtp port (normalement 25, mais Gmail requiert le port 465)
smtp_port=465

;default_domain=mydomain.com
default_domain=smtp.gmail.com

; if your smtp server requires authentication, modify the following two lines
auth_username=<votre adresse>@gmail.com

auth_password=<votre mot de passe>

force_sender=<votre adresse>@gmail.com

Laissez tous les autres champs tels quels. Enregistrez.

4ème étape :

Il faut maintenant indiquer à votre moteur PHP où se trouve le serveur d’envoi de la fonction mail()
Pour cela il faudra éditer le fichier php.ini : clic gauche sur l’icône Wamp dans votre barre  notification (à côté de l’horloge en bas à droite) > PHP > php.ini

Recherchez la ligne sendmail_path et indiquez le chemin absolu du fichier sendmail.exe sur votre disque dur. Par exemple :

; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
; http://php.net/sendmail-path
sendmail_path = "C:\wamp\sendmail\sendmail.exe -t -i"
									

Redémarrez les services de WampServer. Testez… C’est fini :D

Test d’envoi

Si vous avez des difficultés à recevoir vos e-mails, vous pouvez tester si la fonction mail() de PHP ou le serveur SMTP de votre ordinateur sont bien paramétrés avec le petit bout de code suivant à exécuter :

<?php
$dest = "<votre adresse e-mail perso>";
$sujet = "Ceci est un test";
$message = "Ceci est un test de la fonction mail()";
$header = "From: $dest";

/* test 1 */
$envoi = mail($dest, $sujet, $message, $header);

if ($envoi == true)
  echo "<p>Test 1 : la fonction mail() fonctionne. Un e-mail a ete envoye a l'adresse $dest.
  <br />S'il ne vous parvient pas, il y a probablement un blocage au niveau du serveur SMTP de l'hebergeur</p>";
else
  echo "<p>Test 1 : l'envoi par la fonction PHP mail() ne fonctionne pas ou est desactivee</p>";

/* test 2 */
echo "<p>Test 2 : Si bool(false) le mail ne part pas
<br />Si bool(true) l'e mail a bien ete envoye (donc il est bloque apres)</p>";
var_dump(mail($dest, $sujet, $message, $header));
?>
									

Et en dernier lieu… n’oubliez pas de vérifier dans la boite de spam de votre destinataire (on ne sait jamais…) ;)

19 Responses to “Envoyer des e-mails depuis votre ordinateur avec WampServer”

19 Commentaires

  1. webtolosa dit :

    Bonjour Avril21
    Tu n’as pas à renseigner le SMTP, le port et l’adresse d’expéditeur dans ton php.ini, puisque justement Sendmail le remplace.
    Sinon as-tu bien vérifié le login et le mot de passe que tu renseignes dans le fichier sendmail.ini ? La plupart des erreurs viennent de là. En particulier si tu as activé la double authentification sur Gmail, il te faut renseigner non pas ton mot de passe de connexion mais un code de sécurité que tu trouveras dans les options de sécurité de ton compte Google.

  2. Avril27 dit :

    Bonjour

    J’ai suivi le tutoriel pas à pas, mais je recois le message d’erreur, ma fonction de marche pas,c’est une adresse gmail.

    Merci de m’aider
    Ma version de wamp est 3.1.9

    voici mes codes:

    sendmail.ini
    smtp_server=smtp.gmail.com

    smtp_port=465

    smtp_ssl=auto

    default_domain=smtp.gmail.com

    error_logfile=error.log

    php.ini

    SMTP = smtp.gmail.com

    smtp_port = 465

    sendmail_from = »soldeminepat@gmail.com »

    ; For Unix only. You may supply arguments as well (default: « sendmail -t -i »).
    ; http://php.net/sendmail-path
    sendmail_path = « C:\wamp64\sendmail\sendmail.exe -t -i »

    mail.add_x_header = Off

  3. castel72 dit :

    Au temps pour moi.
    Le problème ne venait pas du programme ou du test mais de mon mot de passe. Il était erroné.
    Maintenant ça marche puisque gmail me dit qu’une application non autorisée a été bloquée parce qu’elle tentait d’accéder à mon compte avec mon mot de passe.
    Merci de votre aide.

  4. castel72 dit :

    J’oubliais le plus important : merci pour le tuto et pour l’aide apportée.

  5. catel72 dit :

    Pour les tests d’envoi j’utilise l’adresse mail de mon site qui est une adresse gmail. Et pour le destinataire j’ai aussi utilisé une adresse gmail.
    En effet c’était pour vérifier en localhost que je n’avais pas de bug dans mon php. Ensuite j’utiliserai mon site hébergé sur OVH. Comment configurer le serveur local pour tester l’envoi de mail ?

  6. webtolosa dit :

    1. J’ai précisé clairement que le port 425 est lié a un compte Gmail. Ton compte semble être @laposte.net ?
    2. si ta « fonction PHP mail() ne fonctionne pas » c’est un problème de serveur et non de code ! Tu sembles envoyer tes e-mails en localhost, il te fait configurer ton serveur local pour qu’il puisse envoyer des mails.

  7. Castel72 dit :

    Bonjour,
    J’ai suivi à la lettre le tuto. J’ai tiqué un peu sur smtp_port = 25 dans php.ini et smtp_port=465 dans sendmail.ini mais je me suis dit que le paramètre dans sendmail.iniu devait l’emporter sur celui de php.ini.
    Malheureusement cela ne marche pas. Quand je m’envoie un mail voici le retour :

    Test 1 : l’envoi par la fonction PHP mail() ne fonctionne pas ou est desactivee

    Test 2 : Si bool(false) le mail ne part pas
    Si bool(true) l’e mail a bien ete envoye (donc il est bloque apres)

    F:\HistoireMondiale\Diverses versions du site\site 2.1\testmail.php:19:boolean false

    Où faut-il chercher pour en savoir plus ?

  8. Jean-Philippe dit :

    Merci beaucoup pour ce tuto. Ça fonctionne très bien… quand on ne fait pas une erreur de frappe !

    Encore merci ; JP

  9. Jean-Philippe dit :

    Bonsoir. L’envoi de mail semble bon, mais je ne reçois rien sur mon adresse free. La validation en deux étapes est également désactivée sur Google. Comment faire.

    En tout ca

  10. elona enjy dit :

    Oui Woodchip… Bien vu… Totalement ça… ca m’a bien paru bizarre au début mais j’ai quand même recopié bêtement… lol…

    :-)

  11. webtolosa dit :

    Woodchip > Bien vu ! Merci de ta remarque : un petit bug de mon éditeur de code. C’est corrigé.

  12. elona enjy dit :

    J’ai fini par résoudre mon pb. En fait dans le patch dans php.ini sous Wamp, je n’avais pas mis les séparateurs. Du coup j’avais un message d’anomalie dans la log Apache que je n’avais pas vu parce que je debute et que je ne sais pas encore où regarder…. Depuis, j’ai pu m’écrire et je suis fière de moi….. car en plus j’ai appris à regarder dans les fichiers log… Merci pour votre aide
    Je ne doute pas avoir très prochainement besoin à nouveau d’aide…
    Cordialement

  13. webtolosa dit :

    elona enjy > je viens de rajouter sur l’article un petit test qui devrait te permettre de vérifier d’où vient ton problème (cf. « Test d’envoi » ci-dessus)

  14. Woodchip dit :

    « C:wampsendmailsendmail.exe -t -i »

    Est-ce que c’est normal qu’il manque des slashes ou des backslashes dans la structure du répertoire ? la syntaxe du chemin est-elle correcte ?

  15. elona enjy dit :

    Bonjour

    L’envoi du mail est ok mais je ne reçois rien et je ne vois rien sur la boîte gmail utilisé. J’ai strictement suivi vos instructions. J’ai désactivé la validation en deux étapes sur gmail.

    Cordialement

  16. webtolosa dit :

    @ludw
    Pas forcément :
    Ce paramètre n’est pas disponible pour les comptes sur lesquels la validation en deux étapes est activée. Ces comptes requièrent un mot de passe spécifique à l’application pour l’accès aux applications moins sûres.

  17. ludw dit :

    Vous devrez également paramétrer votre compte google pour autoriser les accès moins sécurisé des applications : https://myaccount.google.com/security

  18. No1 dit :

    Testé avec Port 25 sans soucis.

Commentaire

Name

Mail (ne sera pas publié)

Website

Laisser ces deux champs tels quels :
:D :-) :( :o 8O :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: