WAMP : Envoyer des mails via PHP avec mail()
I. Présentation
Une question qui revient souvent lorsque l'on monte un serveur web, c'est "Comment je vais faire pour envoyer des e-mails ?". Dans le cas, de WAMP (équivalent de LAMP sous Linux), c'est à dire Windows Apache MySQL PHP, on peut envisager d'envoyer des mails sans installer le moindre module supplémentaire.
En fait, on va simplement éditer le fichier de configuration PHP et indiquer les paramètres correspondant au serveur SMTP que l'on souhaite utiliser. Pour rappel, un serveur SMTP permet d'envoyer des e-mails. Ensuite, il suffira d'utiliser la fonction PHP nommée mail() pour envoyer des messages électroniques depuis une page web.
Note : Mise à part la fonction mail(), on peut également utiliser dans le cas de WordPress la fonction wp_mail().
Prêt ?! Alors on commence...
II. Configuration du serveur web
Il faut commencer par éditer le fichier de configuration "php.ini" d'Apache, qui se trouve au chemin suivant (la version d'Apache peut changer...) :
C:\wamp\bin\apache\apache2.4.9\bin\php.ini
Dans ce fichier, vous trouverez une zone nommée [mail function], c'est là qu'il va falloir modifier les paramètres après la mention "For Win32 only".
[mail function] ; For Win32 only. ; http://php.net/smtp SMTP = smtp.it-connect.fr ; http://php.net/smtp-port smtp_port = 25 ; For Win32 only. ; http://php.net/sendmail-from sendmail_from = [email protected]
L'exemple ci-dessus permet de s'appuyer sur le serveur SMTP "smtp.it-connect.fr" sur le port "25". L'adresse d'expéditeur utilisée sera "[email protected]" (sendmail_from).
Note : Vous remarquerez que je n'ai pas précisé d'identifiant et de mot de passe. En effet, dans la prise en charge par défaut de l'envoi de mail, il n'est pas possible de spécifier d'authentification. Si vous souhaitez utiliser l'authentification, il faut passer par une librairie externe comme "Sendmail for Windows".
Enregistrez le fichier de configuration php.ini. Si WAMP est démarré au moment de la modification, il est nécessaire de redémarrer les services. Pour cela, effectuez un clic gauche sur l'icône de WAMP et cliquez sur "Restart All Services".
III. La fonction mail() de PHP
Intéressons-nous à la fonction mail() intégrée à PHP. Cette fonction très simple fonctionne comme ceci :
mail( "[email protected]" , "Sujet" , "Contenu du message" );
Avec trois paramètres, c'est à dire respectivement : l'adresse e-mail de l'expéditeur, le sujet et le message, on peut envoyer un e-mail !
Note : Si vous souhaitez intégrer des paramètres spécifiques dans le header du mail, par exemple une zone "Reply-To" (Répondre à), consultez la page PHP dédié à la fonction mail au niveau de l'Exemple #2.
Il ne reste plus qu'à créer un formulaire sur votre page, par exemple un formulaire de contact, pour profiter pleinement de l'envoi de mails via WAMP et PHP !
Note : Protégez les formulaires et services qui s'appuieront sur la fonction mail de votre machine, de votre serveur, cela évitera de subir les actions des spammeurs.
Hello,
Je n’arrive pas à faire fonctionner l’envoie de mail avec wampserver
Je n’y arrive pas non plus … Avez vous reussi à contourner la difficulté depuis ?
oui je rencontre des difficultés peut-être a cause des 30 fichiers php.ini qui sont dans mon pc
bonjour, j’explique mon principal problème , avec mail() : j’ai besoin de m’authentifier avec un mot de pass pour envoyer. Je n’ai pour l’instant rien trouvé pour pouvoir m’authentifier. ( je viens de passer la journée a étudier nodejs qui propose un envoi de mail avec mot de pass. ).
Inconvénient : il faut trouver une solution pour taper un mot de pass.
Avantage: en étant authentifié on peut voir son mail affiché hors du dossier spam.
J’ai essayé en faisant bien attention avec Wampserver, dossier R:\wamp64\bin\apache\apache2.4.58\bin\, php.ini sur lequel j’ai modifié les paramètres.
Comme je suis sur hotmail pour les essais, j’ai passé SMTP = smtp.hotmail.com, puis SMTP = smtp.live.com, et SMTP = smtp.outlook.live.com.
J’ai redémarré à chaque fois les services.
J’ai fait des tentatives avec d’autres fichiers php.ini.
Et le même message d’erreur apparaît.