Envoyer un E-mail Php

Résolu
Bonjour,
Je cherche un tutrorial, ou tout ce qui pourrait m'aider à envoyer un Email en utilisant le PHP avec WAMP5. J'en ai essayé plusieurs mais il ne fonctionnent pas.
Configuration: Windows XP
Firefox 2.0.0.9

10 réponses

  1. re-bonjour
    Failed to connect to mailserver at "localhost"

    Comme tu n'as sûrement pas de serveur de mail sur ta machine, il ne faut pas mettre "localhost" comme serveur de mail. Je sais, ce n'est pas toi qui l'a mis, il est là parce que Php est livré comme ça.
    Va dans php.ini et dans la rubrique [mail function] modifie la ligne SMTP= pour mettre ton 'vrai' serveur de mail :
    SMTP = smtp.wanadoo.fr si TON FOURNISSEUR D'ACCES est wanadoo
    SMTP = smtp.free.fr si c'est free
    je ne sais pas pour les autres, mais ça apparaît sûrement quelque part sur le site de ton F.A.I.
    1. Bonjour, merci de t'occuper de mon problème.

      J'ai essayé en utilisant zend framework que j'utilise pour mon site :
      code

      <?php
      /** Zend_Controller_Action */
      //require_once 'Zend/Controller/Action.php';
      class IndexController extends Zend_Controller_Action
      {
      public function indexAction()
      {

      require_once 'Zend/Mail.php';
      $mail = new Zend_Mail();
      $mail->setBodyText('Ceci est le texte du message.');
      $mail->setFrom('somebody@example.com', 'un expéditeur');
      $mail->addTo('somebody_else@example.com', 'un destinataire');
      $mail->setSubject('Sujet de test');
      $mail->send();
      die();
      }
      }

      pris sur http://framework.zend.com/manual/fr/zend.mail.html
      et j'ai :

      Fatal error: Uncaught exception 'Zend_Mail_Transport_Exception' with message 'Unable to send mail' in C:\Program Files\wamp\php\libraries\Zend\Mail\Transport\Sendmail.php:101 Stack trace: #0 C:\Program Files\wamp\php\libraries\Zend\Mail\Transport\Abstract.php(333): Zend_Mail_Transport_Sendmail->_sendMail() #1 C:\Program Files\wamp\php\libraries\Zend\Mail.php(648): Zend_Mail_Transport_Abstract->send(Object(Zend_Mail)) #2 C:\Program Files\wamp\www\siroco\application\controllers\IndexController.php(21): Zend_Mail->send() #3 C:\Program Files\wamp\php\libraries\Zend\Controller\Action.php(497): IndexController->indexAction() #4 C:\Program Files\wamp\php\libraries\Zend\Controller\Dispatcher\Standard.php(238): Zend_Controller_Action->dispatch('indexAction') #5 C:\Program Files\wamp\php\libraries\Zend\Controller\Front.php(920): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http)) #6 C:\Program Files\wamp\www\siroco\html\index.php(37): Zend_Controller_Front->disp in C:\Program Files\wamp\php\libraries\Zend\Mail\Transport\Sendmail.php on line 101

      donc j'ai abandonné Zend, et j'ai tenté plusieurs autres trucs dont

      <?php
      if($_POST){
      //Récupération des données du formulaire----------------------------
      $prenom = $_POST["prenom"];
      $nom = $_POST["nom"];
      $email = $_POST["email"];
      $tel = $_POST["tel"];
      $message = $_POST["message"];
      $subject = $_POST["subject"];
      //------------------------------------------------------------------

      //Gestion des erreurs de saisie-------------------------------------
      $erreurs = array();
      if( empty($prenom)) $erreurs = "il manque votre prénom";
      if( empty($nom)) $erreurs = "il manque votre nom";
      if( empty($email)) $erreurs = "il manque votre email";
      if( empty($tel)) $erreurs = "il manque votre téléphone";
      if( empty($message)) $erreurs = "il manque votre message";
      //------------------------------------------------------------------

      if(empty($erreurs)) {
      $from = $email;
      $reply = $from;
      $to = "archeus.monmail@free.fr"; //Mettez l'email de destination ici

      //Mise en forme du contenu au format HTML-----------------------
      $contenu = "message de : ".$prenom." ".$nom;
      $contenu .= "<br /> Tel: ".$tel;
      $contenu .= "<br /> Message: <br />";
      $contenu .= $message;
      //--------------------------------------------------------------

      //Entêtes de formatage de l'email en mode HTML------------------
      $headers = 'MIME-Version: 1.0' . "\n";
      $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\n";
      $headers .= 'From: '.$from."\n";
      $reply = $headers."Reply-to: ".$reply."\n";
      //---------------------------------------------------------------

      //Déclenchement de l'email et reroutage vers une autre page-----
      $resultat = mail($to, $subject, $contenu, $reply);

      if($resultat) {
      echo "email envoyé";
      } else {
      echo "Echec dans l'envoi de l'email";
      }

      } else {
      $texte_erreur = implode("<br />",$erreurs);
      print $texte-erreur;
      }

      }

      ?>
      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      <html xmlns="http://www.w3.org/1999/xhtml">
      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
      <title>Envoi d'email</title>
      </head>

      <body>
      <form action="<?php print $_SERVER["PHP_SELF"]; ?>" method="post" enctype="multipart/form-data" name="form1" id="form1">
      <table width="100%" border="0" cellspacing="1" cellpadding="2">
      <tr>
      <td width="19%">Prénom : </td>
      <td width="81%"><input name="prenom" type="text" id="prenom" value="<?php print $prenom; ?>" size="50" maxlength="100" /></td>
      </tr>
      <tr>
      <td>Nom : </td>
      <td><input name="nom" type="text" id="nom" value="<?php print $nom; ?>" size="50" maxlength="100" /></td>
      </tr>
      <tr>
      <td>Téléphone : </td>
      <td><input name="tel" type="text" id="tel" value="<?php print $tel; ?>" size="50" maxlength="50" /></td>
      </tr>
      <tr>
      <td>Votre email : </td>
      <td><input name="email" type="text" id="email" value="<?php print $email; ?>" size="50" maxlength="100" /></td>
      </tr>
      <tr>
      <td valign="top">Sujet du message : </td>
      <td><input name="subject" type="text" id="subject" value="<?php print $subject; ?>" size="50" maxlength="100" /></td>
      </tr>
      <tr>
      <td valign="top">Texte du message : </td>
      <td><textarea name="message" cols="38" rows="10" id="message"><?php print $message; ?></textarea></td>
      </tr>
      <tr>
      <td colspan="2"> <input type="submit" style="margin-left:200px;" name="Submit" value="Envoyer le message" /> </td>
      </tr>
      </table>
      </form>
      </body>
      </html>

      code pris sur http://www.intras.fr/tutoriels/formation-php-formulaire-email.php
      et j'ai

      Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\Program Files\wamp\www\export\formulaire-prise-contact.php on line 41
      Echec dans l'envoi de l'email
      1. Bonjour

        Peux-tu montrer ton script et donner quelques informations : message d'erreur, comportement innattendu...
        1. Ok, je me suis renseigné (je suis en stage en entreprise alors c'est pas simplement un truc du genre smtp.free.fr que je peux trouver facilement ^^').
          j'éditerai mon message dans 2-3 minutes pou dire si ça marche

          [Edit]
          voila la réponse :( :
          Warning: mail() [function.mail]: SMTP server response: 550 5.7.1 Unable to relay for archeus.frederic@free.fr in C:\Program Files\wamp\www\export\formulaire-prise-contact.php on line 41
          1. Si tu as un client email dans ta machine (outlook express) avec un compte qui marche, regarde ce qu'il y a comme serveur SMTP (Outils / comptes / propriétés / serveurs)
            1. C'est bon, on m'a donné l'information et je l'ai remplacé dans php.ini (mais on n'a pas voulu me dire comment la trouver et outlook express n'était pas configuré, j'y accède par webmail.). A la limite, maintenant que je l'ai , je m'en fous ^^ de savoir comment l'obtenir.
              Tout marche, même le code avec Zend ^^.
              Merci beaucoup
              1. Bonjour,
                j'aimerais envoyer un mail depuis un script php,mais ceci fonctionne bien lorsque je fais l'hebergement sur un site de type www.site.com
                Par contre il ne fonctionne jamais orsque je fais l'hebergement sur un site de type www.site.com.tn
                merci de me repondre
                1. salut
                  pour ta question a propos des site ***.tn
                  .tn = tunisie
                  le port 25 de l smtp est bloqué en Tunisie je sais pas pourquoi je suis tunisien aussi et c'est l'ati qui le bloque
                  1. Je viens de tomber sur ce topic un peu ancien. Mais au cas où ça peut aider, il y a un tuto complet pour envoyer un mail en PHP sans qu'il finisse dans les indésirables ici :

                    http://www.webtuto.fr/tuto-envoyer-un-mail-en-php-formulaire/