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
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…)
Bonsoir Nicolas,
difficile de t’aider à distance. Quelques pistes :
– essaye les SMTP de ton FAI en priorité > https://support.safebrands.com/les-serveurs-de-messagerie-des-principaux-fai/
– bloque ton antivirus et rééssaye : certain antivirus bloquent les envois
– idem avec le firewall de Windows (vérifie si Wamp a toutes les autorisations)
Bonjour j’ai suivi le tuto j’ai bien tout fait au pied de la lettre. J’ai même vérifier sur les commentaire pour être sur. C’est probablement le 15 ème tuto que je suis et pourtant mon mail s’envoie pas. Je voulais savoir si je devais mettre le smtp de gmail ou celui de mon FAI ?
De plus c’est bien pour du local si je me trompe pas pour être sur de ce que tout ce que je fais est bon ou pas.
Je précise j’ai aucune erreur et même dans les logs rien n’apparait.
Merci de votre réponse,
Cordialement.
Tu as cherché dans ta dans ta boite de spam ?
Bonjour
J’ai bien tout suivi votre tuto, j’ai bien enlever la double authentification de google et activé l’accès moins sécurisé des applications, j’ai bien le message comme quoi mon mail a été envoyé avec boolean true… Mais rien dans ma BaL
Une solution ?
Salut !!
Ma configuration est bonne, je pense, l’envoi du mail est bien validé, pourtant je ne reçois rien chez moi !!
J’ai pourtant bien activé accès moins sécurisé des applications de mon compte Google!!
dans un premier temps j’avais cette config dans mon sendmail.ini :
smtp_server=smtp.gmail.com
smtp_port=587
smtp_ssl=auto
default_domain=gmail.com
error_logfile=error.log
;debug_logfile=debug.log
auth_username=monmail@gmail.com
auth_password=monmotdepassegmail
pop3_server=
pop3_username=
pop3_password=
force_sender=monmail@gmail.com
force_recipient=
hostname=
Pour le sendmailpath, j’ai bien mis le bon chemin sans souci
et enfin j’avais un petit code en php que j’ai évidemment mis dans le dossier www de mon wamp :
J’ai aussi testé avec les config d’ici à savoir le port 465 et le default_domain=smtp.gmail.com mais même problème… le mail part bien apparemment, j’ai le message de validation, mais rien dans ma BaL
S’agit-il d’un compte e-mail avec une double authentification ? Il faut en ce cas utiliser non pas le mot de passe du compte, mais un mot de passe spécifique généré depuis votre boite e-mail.
J’ai essayé sans réussir à recevoir le mail avec un code similaire. En fait je suis dans le même cas de figure que AlexGilbert (ci dessous). Je ne reçois pas le mail bien que le test me dit que le mail a été envoyé.
« Ensuite, lorsque le -t -i est bien à l’extérieur des guillemets l’autre message me disant que le mail a été envoyé apparait mais le problème est que je ne reçois pas le mail pourtant j’ai respecté à la lettre tout ce que vous avez modifié dans les paramètres de la boite mail et j’utilise bien évidemment une adresse gmail »
Après 15 minutes je reçois un mail de google m’indiquant une tentative d’intrusion « L’accès à votre compte par une application suspecte a été bloqué ». Donc je suppose que cela fonctionne ? Mais comment empêcher le blocage dans mon cas ? En supposant que je n’ai pas commis d’erreur.
ne pas faire de copier-coller des textes du blog, mais le recopier…
Bonjour,
Pour ma part je dois mettre le -t -i a l’extérieur des guillemets dans le fichier php.ini sinon ce message apparait est-ce normal ?
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
Ensuite, lorsque le -t -i est bien à l’extérieur des guillemets l’autre message me disant que le mail a été envoyé apparait mais le problème est que je ne reçois pas le mail pourtant j’ai respecté à la lettre tout ce que vous avez modifié dans les paramètres de la boite mail et j’utilise bien évidemment une adresse gmail
Quelqu’un sait comment m’aider?
Merci par avance de vos réponses.
Bonjour,
Non, un copier-coller ne suffit pas, il te faut personnaliser ce code avec tes identifiants mails. comme mentionné sur le billet. Si tu ne débutes pas (ce dont je doute ?) tu comprendras vite, c’est simple.
c’est mieux de lire tout le post avant d’envoyer un message
Bonjour, je ne suis pas un débutant en programmation et je n’arrive pas à utiliser le programe teste que tu as mis en ligne. est il possible seulement de copier coler ce teste dans la page source d’une page sans rien ajouter d’autre?
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.
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
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.
J’oubliais le plus important : merci pour le tuto et pour l’aide apportée.
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 ?
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.
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 ?
Merci beaucoup pour ce tuto. Ça fonctionne très bien… quand on ne fait pas une erreur de frappe !
Encore merci ; JP
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
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…
Woodchip > Bien vu ! Merci de ta remarque : un petit bug de mon éditeur de code. C’est corrigé.
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
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)
« 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 ?
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
@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.
Vous devrez également paramétrer votre compte google pour autoriser les accès moins sécurisé des applications : https://myaccount.google.com/security
Testé avec Port 25 sans soucis.