Le blog du pangolin

Accueil > Programmation > PHP > Configurer xampp pour envoyer et recevoir des mails

Configurer xampp pour envoyer et recevoir des mails

dimanche 22 juillet 2012, par Super Pangolin

J’aime beaucoup xampp. Il est très complet et me permet de développer mes petites applis PHP pendant le temps que je perds dans le TER tous les jours. Parmi les petits « plus » qui me font préférer xampp à ses concurrents, il y a le serveur mercury mail. Il comprend un serveur pop, smtp, imap, bref tout le nécessaire pour tester l’envoi de mail de votre développement php en local.

Après avoir installé xampp et lancé le script xampp-config, il reste quelques petits paramétrages pour avoir un mercury opérationnel. Si nous lançons xampp-control-3-beta.exe, nous pouvons lancer apache, mysql et mercury sans erreur :

Cliquons sur le bouton « admin » de mercurymail :
Cela ouvre une interface plutôt brouillonne contenant 11 fenêtres de logs et statuts.

Commençons par créer des utilisateurs. Dans le menu « configuration », choisissez « manage local users »

Cliquez sur « add » et entrez l’utilisateur de votre choix.

Entrez un login et un mot de passe (pangolin/artichaud pour moi – cf P. Desproges) et cliquez sur OK puis sur Close.

Personnalisons la configuration du smtp. Par défaut, l’authentification est désactivée, ce qui n’est pas terrible pour tester l’envoi de mail.Dans le même menu configuration, choisissons maintenant « Mercury SMTP server ».

Sur le premier onglet, pas grand chose à modifier, si ce n’est le nom du serveur si ça vous amuse.

Dans le deuxième onglet, nous allons forcer l’authentification. Pour cela, cochons (le verbe, pas l’animal) la case « only authenticated... » (la dernière) et créons un fichier de mot de passe. Donnez lui le nom qui vous convient et cliquez sur « Edit ». Là, entrez autant de login que nécessaire suivi d’un espace et d’un mot de passe. Cliquez sur « save ». Votre serveur est prêt.

Si vous voulez aller un peu plus loin, dans le menu configuration, « mercury core module configuration » permet de paramétrer les réglages généraux de mercury et notament les « domaines locaux », qui sont les domaines que mercury va gérer dans son serveur imap.

Roundcube

Afin de le tester, nous pouvons poser un roundcubemail dans notre htdocs. Admettons que vous l’ayez décompressé dans le répertoire « htdocs\roundcubemail ». Pour le configurer, il suffit d’aller à l’url : http://localhost/roundcubemail/installer/.

Cliquez sur « start installation ». Activez les modules requis dans le php.ini

extension=php_fileinfo.dll
extension=php_openssl.dll
extension=php_intl.dll

et redémarrez apache. En cas d’erreur intl, copiez les dll icu* dans le répertoire « bin » d’apache. Actualisez la page de roundcube et cette fois tout doit être bon.

Créons la base mysql comme définie dans le fichier d’installation :

  1. CREATE DATABASE roundcubemail ;
  2. GRANT ALL PRIVILEGES ON roundcubemail.* TO roundcube@localhost
  3.     IDENTIFIED BY 'password';

Télécharger

En changeant « password » par le mot de passe de votre choix. Importez ensuite le fichier sql fourni dans la base que l’on vient de créer.

mysql roundcubemail -u roundcube -p < c:\xampp\htdocs\roundcubemail\SQL\mysql.initial.sql

Revenez sur le navigateur et cliquez sur « next » pour passer à la configuration de roundcube.

Dans la section « Database setup », entrez le mot de passe que vous avez choisi juste avant. Dans la section « imap settings », entrez « localhost » comme serveur, puis pareil pour le smtp. Entrez un utilisateur et mot de passe configuré dans mercury pour se connecter au smtp (pour moi, pangolin/artichaud). Enfin, dans le paramètre « language », entrez « fr_FR ». Cliquez sur « create config » ce qui génère deux fichiers à enregistrer dans le dossier « config ». Cliquez sur « continue ».

Testez l’envoi de mail et l’accès au serveur imap. Normalement, si vous avez suivi ce tutoriel, ça doit fonctionner du premier coup. Vous pouvez maintenant allez sur l’interface de roundcube.

Vous verrez le mail de test que vous avez envoyé. Vous aurez de même dans votre boîte de réception le résultat de vos tests d’envoi de mail.

Utilisation avec codeIgniter

Éditez le fichier email.php du répertiore config de votre application et adaptez le contenu à la configuration que vous avez choisi pour mercurymail. Avec l’exemple de cet article, cela donne :

  1. <?php
  2. $config['protocol'] = 'smtp';
  3. //$config['mailpath'] = '/usr/sbin/sendmail';
  4. $config['charset'] = 'utf8';
  5. $config['wordwrap'] = TRUE;
  6. $config['smtp_host'] = 'localhost';
  7. $config['smtp_user'] = 'pangolin';
  8. $config['smtp_pass'] = 'artichaut';

Télécharger

Pour envoyer un mail, rien de plus simple : on charge la librairie, on l’initialise et on envoie.

  1. //--- Chargement de la classe
  2. $this->load->library('email');
  3. //--- On charge les paramètres du fichier de configuration
  4. $this->email->initialize();
  5. //--- Expéditeur, destinataire, sujet, contenu
  6. $this->email->from('superpangolin@free.fr', 'Super Pangolin');
  7. $this->email->to('pangolindebutant@free.fr');
  8. $this->email->cc('espion@pangolin.fr');
  9.        
  10. this->email->subject('Mail de Test');
  11.  
  12. //--- le contenu du mail est dans une vue
  13. $this->load->library('parser');
  14. $contenuMail = $this->parser->parse('mailPangolins', $donneesMail, true);
  15.  
  16. //--- On choisit le type de mail html
  17. $this->email->set_mailtype('html');
  18.  
  19. $this->email->message($contenuMail);
  20.        
  21. $this->email->send();

Télécharger

Un certain nombre de méthodes de la classe email de codeIgniter telles que set_mailtype ne sont pas documentées, notamment des fonctions de validation des données (adresses mail, contenu). Je vous conseille d’aller faire un tour dans les sources ou de configurer l’autocomplétion dans votre ide.

Messages

  • Bonjour, tout d’abord un grand merci et un grand bravo pour ce tuto bien expliquer.

    J’ai suivie votre tuto a la lettre mais j’ai bloquer sur la création de la base de donner

    Pourriez vous me donne un peu plus d’information sur le sujet car quand je clique sur le télécharger c’est une page internet avec tu texte qui s’ouvre j’ai rien a enregistrer

    Merci pour vos prochaine réponse

    • Bonjour

      Tu ouvres phpmyadmin, tu cliques sur l’onglet "sql" et tu tapes le code suivant :

      CREATE DATABASE roundcubemail ;
      GRANT ALL PRIVILEGES ON roundcubemail.* TO roundcube@localhost
         IDENTIFIED BY 'motDePasse';

      Ensuite, tu vas sur la base roundcubemail, tu cliques sur l’onglet "importer". Tu cliques sur le bouton "choisissez un fichier" et tu vas chercher le fichier "mysql.initial.sql". Tu cliques sur "exécuter" en bas de la page et c’est fait, ta base est prête.

    • bonsoir,

      je viens de voir votre réponse et vous remercie de votre réponse très précise (ce qui n’est pas un plus quand on connait pas grand chose)

      Je voudrai pas abuse de votre gentillesse vous avez déjà beaucoup donner en créant ce tuto clair et simple a comprendre

      J’ai fais vous m’avez dis sur le message précédent mais il y a une erreur en rouge de mon phpmyadmin près l’importation de ficher "mysql.initial.sql"

      #1064 - You have an error in your SQL syntax ; check the manual that corresponds to your MySQL server version for the right syntax to use near ’[dbo].[cache] ( [cache_id] [int] IDENTITY (1, 1) NOT NULL , [user_id] [int] ’ at line 1

      faut-il modifier quelque chose ? dans le ficher "mysql.initial.sql"

      Merci beaucoup de votre aide pour tous vous dire ça fais deux mois que je cherche a test les mail de mon site en local mais sans réponse même après plusieurs post sur des forum et enfin je touche au but grâce a votre tuto.

      Merci encore vous pouvez me contacter par mail si vous voulez

    • Désoler pou se dernier message une gros ereur d’inatention je me suis tromper de ficher

      Vous êtes un champion j’ai enfin réussi !!!!!!!!!

      Merci mille fois

  • Bonsoir
    Moi j’ai tout configurer mais en testant l’envoi de mail,j’ai cette erreur :
    SMTP send : NOT OK(Failed to set sender ’amadou@localhost’. Service not available, closing channel. (Code : 421))

  • allo sa c’est un test Configurer xampp pour envoyer et recevoir des mails

  • Bonjour .
    j’ai configuré xampp en smtp (juste avec sndmail ) il fonctionne car quand je fais un test j’ai la confirmation .Mais jamais je ne recois des message dans ma boite Gmail.Sur google "applications moins securisées "n’existe plus ,il a été supprimé.Ilest possible que le soucis vienne de là.Auriez vous la solution ?
    Bravo pour ce tutoriel il est super .peut être qu’en desespoir de cause je ferais une tentative par votre façon
    Merci beaucoup

Un message, un commentaire ?

Qui êtes-vous ?
Votre message

Pour créer des paragraphes, laissez simplement des lignes vides.