Comment configurer WampServer pour envoyer un mail depuis localhost en PHP

Lorsque vous créez une applications web professionnelles, il est important de tester la fonctionnalité du messagerie avant de déployer le site web. Il est donc nécessaire pour les développeurs web d’envoyer des emails depuis leur environnement de développement.

Nous pouvons envoyer des emails depuis notre hôte local en utilisant un serveur de messagerie. Le serveur SMTP permet d’envoyer des messages depuis localhost et sendmail, c’est un agent de transport de mail qui se trouve dans le fichier php.ini.

Suivez les étapes ci-dessous pour configurer sendmail :
 
 

Etape 1 : Télécharger sendmail

Téléchargez sendmail et extrayez tous les fichiers dans le dossier C:\wamp64\sendmail.
 

 

Etape 2 : Configurer sendmail

Ouvrez le fichier sendmail.ini situé dans « c:\wamp64\sendmail\sendmail.ini ».
 

 
Trouvez [sendmail] en appuyant sur les touches ctrl + f.
 

 
Recherchez et modifiez les paramètres de configuration SMTP suivants.

smtp_server=smtp.gmail.com
smtp_port=587
error_logfile=error.log
debug_logfile=debug.log
[email protected]
auth_password=Votre-MotDePasse-Gmail
[email protected](optionnel)

 
 

Etape 3 : Configurer le fichier php.ini

Ouvrez le fichier php.ini.
 

 
Trouvez [mail function] en appuyant sur ctrl + f.
 

 
Remplacez les paramètres de configuration SMTP comme ci-dessous :

SMTP=smtp.gmail.com
smtp_port=587
sendmail_from = [email protected]
sendmail_path = "\"C:\wamp64\sendmail\sendmail.exe\" -t"
N’oubliez pas de redémarrer WampServer à chaque fois que vous modifiez le fichier php.ini. Parfois vous devez quitter WampServer et ré-éxecuter le, pour s’assurer que les modifications sont prises en compte.

 

Script pour envoyer un mail:

Copier le script suivant dans un fichier PHP appelé par exemple sendmail.php et placez le dans le répertoire www.

<?php
	$dest = "[email protected]";
	$sujet = "Email de test";
	$corp = "Salut ceci est un email de test envoyer par un script PHP";
	$headers = "From: [email protected]";

	if (mail($dest, $sujet, $corp, $headers)) {
		echo "Email envoyé avec succès à $dest ...";
	} else {
		echo "Échec de l'envoi de l'email...";
	}
?>

Maintenant, accédez à l’URL http://localhost/sendmail.php pour exécuter le script et envoyer l’e-mail. Si tout se passe bien, vous devriez voir le message de réussite « Email envoyé avec succès à [email protected] » dans votre navigateur. Si vous avez utilisé votre propre adresse e-mail pour l’adresse du destinataire, vous devriez également recevoir l’e-mail.
 
Si le message d’erreur « Échec de l’envoi de l’email… » s’affiche, vous devez configurer les paramètres de sécurité de GMAIL, en visitant le lien suivant https://myaccount.google.com/security

Défiler la page vers le bas jusqu’à ce que vous trouver Accès moins sécurisé des applications, puis cliquez sur Activer l’accès comme montrer dans l’image ci-dessous:
 

 
Cliquez pour activer l’option.
 

 
Maintenant vérifier, si tout se passe bien, vous devriez voir le message de réussite « Email envoyé avec succès à [email protected] » dans votre navigateur.
Formulaire de contact en PHP avec MySQL

9 réflexions sur “Comment configurer WampServer pour envoyer un mail depuis localhost en PHP

  • février 5, 2020 à 11:27 am
    Permalien

    Bonjour tous le monde,
    J’ai essayé de configuré mon serveur wamp et mon php.ini pour tester mon formulaire d’envoie de mail mais ça ne marche pas, pourtant j’ai la même configuration que vous avez indiqué
    j’ai déjà vérifié si mon script php mais il semble fonctionné sans bug

    • février 5, 2020 à 12:08 pm
      Permalien

      Si le message « Échec de l’envoi de l’email… » s’affiche. C’est sûr que vous avez un problème de configuration puisque la fonction mail() renvoie false.

  • février 5, 2020 à 1:58 pm
    Permalien

    Voila ce que j’ai mis dans mon fichier sendmail.ini

    [sendmail]
    smtp_server=smtp.gmail.com
    smtp_port=587
    smtp_ssl=ssl
    default_domain=localhost
    error_logfile=error.log
    debug_logfile=debug.log
    [email protected]
    auth_password=Mon_Mo_de_passe
    pop3_server=
    pop3_username=
    pop3_password=
    [email protected]
    force_recipient=
    hostname=locahost

    et dans php.ini j’ai fai quelque chose comme ça

    [mail function]
    ; For Win32 only.
    ; http://php.net/smtp
    SMTP = smtp.gmail.com
    ; http://php.net/smtp-port
    smtp_port = 587

    ; For Win32 only.
    http://php.net/sendmail-from
    ;sendmail_from [email protected]

    ; 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 »

    • février 5, 2020 à 2:34 pm
      Permalien

      – Modifier les valeurs suivants dans le fichier sendmail.ini
      smtp_ssl=auto
      ;default_domain=localhost ; mettez en commentaire cette ligne, ajoutez le ; au début
      hostname= ; laissez ce paramètre vide

      **************************************************************

      Veillez vérifier si le fichier « sendmail.exe » existe dans le chemin suivant C:\wamp64\sendmail\sendmail.exe

      **************************************************************

      N’oublier pas d’activez l’option de sécurité sur votre compte Gmail.

  • février 5, 2020 à 3:23 pm
    Permalien

    je vous remerci de votre interet mais il semble que l’email n’est pas toujours envoyer vers le destinataire
    j’aimerais vous envoyé mon scripte php

    $reponse = «  »;
    function verifieEmail($mail) {
    if (preg_match(‘/^[a-zA-Z0-9_]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$]/i’, $mail)) {
    return false;
    }

    list($nom, $domaine) = explode(‘@’, $mail);
    if (getmxrr($domaine, $mxhosts)) {
    return true;
    } else {
    return false;
    }

    }
    if (!empty($_POST[‘nom’]) && !empty($_POST[‘expediteur’]) && !empty($_POST[‘message’])) {
    $destinataire = « [email protected] »;
    $sujet = « Recommandation pour Rezocall »;
    $message = « Nom :  » . $_POST[‘nom’] . « \r\n »;
    $message .= « Adresse email :  » . $_POST[‘expediteur’] . « \r\n »;
    $message .= « Message :  » . $_POST[‘message’] . « \r\n »;
    $from = $_POST[‘expediteur’];
    if (verifieEmail($from)) {
    $entete = ‘De la part de : ‘ . $from;
    //$entete .= « Content-Type: text/html; charset=\ »utf-8\ »\r\n »;
    if (mail($destinataire, $sujet, $message, $entete)) {
    var_dump($_POST);
    header(‘Location: index.php’); // Redirection vers la page d’acceuil
    } else {
    $reponse = « Une erreur s’est produite. Votre demande n’a pas été envoyée. »;
    }
    } else {
    $reponse = « Votre email est invalide. Votre demande n’a pas été envoyée. »;
    }
    } else {
    $reponse = « Vous n’avez pas rempli tous les champs. Votre demande n’a pas été envoyée. »;
    }

    if ($reponse) {
    echo $reponse;
    }

    losque j’envoy l’email, la reponse est égale a « Une erreur s’est produite. Votre demande n’a pas été envoyée. »
    j’ai déjà ésseyé un try(){}catch(){} mais il n’y a pas d’erreur dans l’execution

  • juillet 10, 2020 à 2:23 am
    Permalien

    merci c est genial ca marche

  • juillet 28, 2020 à 6:05 pm
    Permalien

    Bonjour, j’ai atterri sur votre site en cherchant les formulaires de contact qui m’a l’air pas mal et fourni. Je n’ai pas encore eu le temps de faire le tour. J’apprends actuellement le développement en autodidacte et suis sur tous les fronts en même temps (html, css, bootstrap, js, php, mysql, …) Je me perds un peu mais garde l’espoir 🙂 . Je rencontre le même problème de fonctionnalité avec ce code qui me confirme qu’il à bien été envoyé mais ma boite mail (sfr), me le refuse (daemon). Merci pour votre éclairage.

  • novembre 11, 2020 à 5:55 pm
    Permalien

    Bonjour,
    Je rencontre le problème aussi. le fichier php me renvoie « Echec de l’envoi de l’email.. »
    Mon fichier sendmail.ini est configuré comme ceci :

    smtp_server=smtp.gmail.com
    smtp_port=587
    smtp_ssl=
    ; default_domain=smtp.gmail.com
    error_logfile=error.log
    debug_logfile=debug.log
    [email protected]
    auth_password=xxxxxxxx
    pop3_server=
    pop3_username=
    pop3_password=
    [email protected]
    force_recipient=
    hostname=

    Mon fichier php.ini

    SMTP = smtp.gmail.com
    smtp_port = 587
    sendmail_from = »[email protected] »
    sendmail_path = « C:\wamp64\sendmail\sendmail.exe -t »
    mail.add_x_header = Off

    • novembre 11, 2020 à 9:49 pm
      Permalien

      Ouvrez sendmail.ini et définissez la configuration comme suit:

      smtp_server = smtp.gmail.com
      smtp_port = 465
      smtp_ssl = ssl
      default_domain = localhost
      error_logfile = error.log
      debug_logfile = debug.log
      auth_username = [your_gmail_account_username]@gmail.com
      auth_password = [your_gmail_account_password]
      serveur_pop3 =
      pop3_username =
      mot de passe_pop3 =
      force_sender =
      force_recipient =
      hostname = localhost

      Accédez à votre compte Gmail. Cliquez sur Paramètres > Transfert et POP / IMAP > Accès IMAP. Cliquez sur « Activer IMAP », puis enregistrez vos modifications.

      Exécutez votre serveur WAMP. Activez ssl_module sous Apache Module.

      Ensuite, activez php_openssl et php_sockets sous PHP.

      Ouvrez php.ini et configurez-le comme les codes ci-dessous. En gros, il vous suffit de définir le sendmail_path.

      [mail function]
      ; For Win32 only.
      ; http://php.net/smtp
      ;SMTP =
      ; http://php.net/smtp-port
      ;smtp_port = 25
      
      ; For Win32 only.
      ; http://php.net/sendmail-from
      ;sendmail_from = [email protected]
      ; 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 le serveur Wamp

      J’espère que cela fonctionnera pour vous.

Commentaires fermés.