Partage
  • Partager sur Facebook
  • Partager sur Twitter

problème avec mail envoyé par formulaire

Sujet résolu
    9 février 2006 à 17:55:38

    bonjour,
    je n'arrive pas à trouver mon erreur sur mon script pour envoyer un mail via un formulaire.
    L'erreur suivante s'affiche sur ma page "envoie.php":

    Warning: 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:\documents and settings\mercadier\mes documents\mes images\sxmbeach\images\accueil\administration\envoie.php on line 55

    le code de ma page "envoie.php"
    <?php
    $nom= $_POST['nom'];
    $prenom= $_POST['prenom']
    $telephone= $_POST['telephone'];
    $email= $_POST['email'];
    $pays= $_POST['pays'];
    $sujet= $_POST['sujet'];
    $message= $_POST['message'];

    if(isset($_POST['nom']) AND isset($_POST['prenom']) AND isset($_POST['email']) AND isset($_POST['pays']) AND isset($_POST['sujet']) AND isset($_POST['message']))
    {
    mail("monmail@wanadoo.fr","$sujet","$message","From: $email");
    echo '<p><strong>Votre méssage a bien été envoyé, nous vous répondrons dans les plus brefs délais.</strong></p>';
    }

    else

    {

    ?>
                                  <br/>
                    <p><strong>Merci de renseigner tout les champs marqués d'une *</strong></p>
                   <?php include('
    formulaire.php');?>
                              
               
    <?php
    }
    ?>



    et mon formulaire :
    <form method="post" action="envoie.php">
                                 <fieldset>
                         <legend>Contact</legend>
                          <label>Nom*</label><br class="br" />
                             <input name="nom" type="text" class="textfield" />
                                <br />
                                               <label>Prénom*</label><br class="br" />
                             <input name="prenom" type="text" class="textfield"  />
                                 <br />
                           <label>Email*</label><br class="br" />
                             <input name="email" type="text" class="textfield"  />
                                <br />
                          <label>Téléphone</label><br class="br" />
                              <input name="telephone" type="text" class="textfield" />
                                                       <br />
                           <label>Pays*</label><br class="br" />
                             <input name="pays" type="text" class="textfield"  />
                                                       <br />
                                                       <br />
                          <label>Sujet*</label><br class="br" />
                              <input name="sujet" type="text" class="textfield" />
                                                             <br />
                          <label>Méssage*</label><br class="br" />
                            <textarea cols="30" rows="15" name="message"></textarea>
                                  <br />
                                          <label>&nbsp;</label><br class="br" />
                            <input name="ok" type="submit" class="submit" value="envoyer" />
                                                    <br />
                     </fieldset>
    </form>


    merci encore pour votre aide
    • Partager sur Facebook
    • Partager sur Twitter
      9 février 2006 à 18:15:37

      Hello !
      Ce message signifie que tes infos SMTP ne sont pas définies.

      - Si tu es en local, il faut que tu ailles voir dans le php.ini et que tu cherches [mail function]
      ensuite, tu modifies :
      SMTP = smtp.wanadoo.fr (selon ton hebergeur)

      ; For Win32 only.
      sendmail_from = monadresse@wanadoo.fr (ton adresse email)

      Moi c'est comme ca que j'ai fait ;)
      ++
      • Partager sur Facebook
      • Partager sur Twitter
        9 février 2006 à 18:31:01

        ok, merci jeff52.

        Mais mon probleme c'est aussi que même si je ne rentre aucune valeur dans les champs de mon formulaire...c'est le même message qui apparait alors que normalement, puisque les variable n'existe pas, il devrait s'afficher :
        ?>
                                      <br/>
                        <p><strong>Merci de renseigner tout les champs marqués d'une *</strong></p>
                       <?php include('
        formulaire.php');?>
                                 
                   
        <?php
        }
         


        ...mais ce n'est pas le cas :(
        • Partager sur Facebook
        • Partager sur Twitter
          9 février 2006 à 19:09:40

          Bonjour, tes variables existent, sisi mais elles ont la valeur NULL, utilise la fonction !empty pour voir si elles sont vides ou pas :)



          Bisous, Nyu
          • Partager sur Facebook
          • Partager sur Twitter
            9 février 2006 à 19:34:40

            ok, merci
            mais comment j'utilise cette fonction et ou je la met..? :euh:
            • Partager sur Facebook
            • Partager sur Twitter
              9 février 2006 à 19:41:54

              He bien tout simplement :
              if(!empty($_POST['variable']) &&...)
              //Vide
              else
              //Pas vide

              :p



              Bisous, Nyu
              • Partager sur Facebook
              • Partager sur Twitter
                9 février 2006 à 21:24:31

                ok ,merci ;)
                j'essaie tout de suite et je vous tiens au jus...
                • Partager sur Facebook
                • Partager sur Twitter
                  10 février 2006 à 13:57:26

                  bon, j'ai pas eu le temps d'essayé encore mais juste une petite précision, le !empty je le met à la place du isset ou bien faut que je rajoute une condition du style :
                  if(isset($_POST['nom']) AND isset($_POST['prenom']) AND isset($_POST['email']) AND isset($_POST['pays']) AND isset($_POST['sujet']) AND isset($_POST['message']))
                  {
                  if(!empty($_POST['nom']) AND !empty($_POST['prenom']) AND !empty($_POST['email']) AND !empty($_POST['pays']) AND !empty($_POST['sujet']) AND !empty($_POST['message']))
                  {
                  mail("monmail@wanadoo.fr","$sujet","$message","From: $email");
                  echo '<p><strong>Votre méssage a bien été envoyé, nous vous répondrons dans les plus brefs délais.</strong></p>';
                  }
                  }
                  else

                  {

                  ?>
                                               
                                  <br/><p><strong>Merci de renseigner tout les champs marqués d'une *</strong></p>
                                 <?php include('
                  formulaire.php');?>
                                           
                             
                  <?php
                  }
                  ?>


                  • Partager sur Facebook
                  • Partager sur Twitter
                  Anonyme
                    10 février 2006 à 15:19:04

                    Bonjour,

                    Voila un principe de code pour email qui fonctionne en une seule page il te suffit de faire les adaptations en fonction de tes propres champs et l'adresse email du destinataire.


                    <?php
                    $email_webmaster = "votre_adresse_email";//// indiquer votre adresse email /////
                    // === traitement des données du formulaire ============================================================
                    if (isset($_POST["envoyer"])){
                    // le formulaire a été soumis
                            $etat = "erreur";
                    // Valeur par défaut. Prendra la valeur "ok" s'il n'y a pas d'erreur
                    // --- mise en forme des champs saisis dans le formulaire lors de sa soumission ---
                            if (isset($_POST["email_expediteur"])) {
                                     $_POST["email_expediteur"]=trim(stripslashes($_POST["email_expediteur"]));
                            }
                            if (isset($_POST["titre"])) {
                                     $_POST["titre"]=trim(stripslashes($_POST["titre"]));
                            }
                            if (isset($_POST["message"])) {
                                     $_POST["message"]=trim(stripslashes($_POST["message"]));
                            }
                            // --- test de la validité des champs saisis ---
                            if (empty($_POST["email_expediteur"])) {
                    // il manque l'email de l'expéditeur
                                     $erreur="Saisissez votre adresse email...";
                            }
                            elseif (!eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\.[a-z]{2,3}$",$_POST["email_expediteur"])){
                    // l'adresse e-mail n'est pas valide
                                     $erreur="Votre adresse e-mail n'est pas valide...";
                            }
                            elseif (empty($_POST["message"])) {
                    // le message est vide
                                     $erreur="Saisissez un message...";
                            }
                            else {
                    // --- tous les champs sont correctement remplis: on pourra envoyer le mail ---
                                     $etat="ok";
                            }
                    }
                    else {
                    // --- le formulaire n'a pas été soumis ---
                               $etat="attente";
                    }
                    // === fin de traitement des données du formulaire =======================================================
                    ?>
                    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
                    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
                    <html xml:lang="fr" lang="fr" xmlns="http://www.w3.org/1999/xhtml">
                    <head>
                    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
                    <title>Formulaire de contact</title>
                    </head>
                    <body>
                    <div align="center">
                    <h1> </h1>
                    <h1> </h1>
                    <h1> </h1>
                    <?php
                    if ($etat!="ok"){// le formulaire n'a pas été soumis, ou soumis avec une erreur
                             if ($etat=="erreur"){
                    //le formulaire a été soumis avec une erreur
                                             echo "<p><strong>".$erreur."</strong></p>\n";
                    // afficher le message d'erreur
                             }
                    ?>
                            <form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>">
                                    <h2>Contacter le webmaster (le nom de votre site)</h2><!-- mettre le nom de votre site ou autre -->
                            <blockquote>
                              <p>
                                <label for="email_expediteur">          Votre adresse e-mail (obligatoire):</label>
                                <br />
                                <input name="email_expediteur" type="text" class="minuscule" id="email_expediteur" value="<?php
                            if (!empty($_POST["
                    email_expediteur"])) {
                    // l'adresse email de l'expéditeur a été saisie: la réafficher
                                    echo htmlspecialchars($_POST["
                    email_expediteur"],ENT_QUOTES);
                            }
                            ?>"
                    size="60" />
                              </p>
                              <p>
                                <label for="titre">Titre de message (facultatif):</label>
                                <br />
                                <input type="text" size="100" name="titre" id="titre" value="<?php
                            if (!empty($_POST["
                    titre"])) {
                    // le titre du message a été saisi: le réafficher
                                    echo htmlspecialchars($_POST["
                    titre"],ENT_QUOTES);
                            }
                            ?>"
                    />
                              </p>
                              <p>
                                <label for="message">Message (obligatoire):</label>
                                <br />
                                <textarea name="message" id="message" cols="90" rows="7"><?php
                            if (isset($_POST["message"])) {
                    // le message a été saisi: le réafficher
                                    echo htmlspecialchars($_POST["message"],ENT_QUOTES);
                            }
                            ?>
                                </textarea>
                              </p>
                            </blockquote>
                            <div align="center">
                            <p><input type="submit" name="envoyer" value="Envoyer" />
                            </p></div>
                            </form>
                    <?php
                    }
                    else {
                    // le formulaire a été soumis sans erreur, on envoie le mail
                            $entete = "From: ".$_POST["email_expediteur"]." <".$_POST["email_expediteur"].">\n";
                            $entete .= "MIME-Version: 1.0";
                            if (@mail($email_webmaster,$_POST["titre"],$_POST["message"],$entete)){
                    // mail envoyé
                                    echo "Votre message a été envoyé.<br />\n";
                                    echo "<a href=\"".$_SERVER["PHP_SELF"]."\">Envoyer un autre message...</a>\n";

                            }
                            else {
                    // erreur lors de l'envoi du mail
                                    echo "Un problème s'est produit lors de l'envoi du message.\n";
                                    echo "<a href=\"".$_SERVER["PHP_SELF"]."\">Réessayez...</a>\n";
                            }
                    }
                    ?>
                    <div align="center">
                      <input type=button value="Fermer le Formulaire" onclick="javascript:self.close();" />
                    </div>
                    </body>
                    </html>


                    L'avantage de ce principe en une seule page, c'est que si un champ n'est pas bon ou n'est pas rempli, la page réaffiche les champs qui le sont pour éviter à l'internaute de tout retaper si une erreur ce produit.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      10 février 2006 à 17:52:16

                      merci beaucoup eguillaume :-)
                      c'est vrai que ton script est beaucoup plus pratique pour l'inernaute.
                      Je m'en vais le tester tout de suite !
                      merci encore d'avoir pris le temps de me répondre :-)
                      • Partager sur Facebook
                      • Partager sur Twitter
                        11 février 2006 à 11:45:50

                        re, c'est encore moi :-°

                        bon le script de eguillaume marche presque bien mais encore 2 petites questions :

                        Dans mon formulaire, j'ai rajouté les champs nom, prenom, tel, pays.
                        Comment retrouver ces données dans le mail envoyé (j'imagine qu'il faut le mettre dans la variable $entete mais comment faut il les ecrire ? A moins que ce soit ici qu'il faut que je les rajoute :
                        if (@mail($email_webmaster,$_POST["titre"],$_POST["message"],$entete, $telephone, $nom, $prenom, $pays))

                        euh je précise juste que j'ai évidemment défini ses variable au préalable ^^

                        Ensuite dans le script, j'ai vu que l'on employait la fonction @mail(), quelle est sa différence avec la fonction mail()

                        merci encore et encore, je sens que je tiens le bon bout là :p
                        • Partager sur Facebook
                        • Partager sur Twitter
                          12 février 2006 à 14:26:19

                          bon petit up :)

                          J'ai lu la doc PHP et n'ai toujours rien pigé sur le fonctionnement des entêtes...
                          Deplus quand j'essaie le script (en local) je revient toujours sur le même message d'erreur même si tout mes champs ont été préalablement rempli.. :(

                          • Partager sur Facebook
                          • Partager sur Twitter
                          Anonyme
                            13 février 2006 à 2:37:27

                            Citation : arnone

                            bon petit up :)

                            J'ai lu la doc PHP et n'ai toujours rien pigé sur le fonctionnement des entêtes...
                            Deplus quand j'essaie le script (en local) je revient toujours sur le même message d'erreur même si tout mes champs ont été préalablement rempli.. :(



                            Bonsoir,

                            Pour la question sur la différence entre mail() et @mail() je ne sais plus si je retrouve le texte que j'ai lu je te transmets. Par contre pour ton message voila deux possibilitées la première je suis sur, la deuxième un peut moins.

                            première:

                            <?php
                            }
                            else {
                            // le formulaire a été soumis sans erreur, on envoie le mail
                                    $entete = "From: ".$_POST["email_expediteur"]." <".$_POST["email_expediteur"].">\n";
                                    $entete .= "MIME-Version: 1.0";
                                    $message=$_POST["message"]."\n".$_POST["telephone"]."\n".$_POST["nom"]."\n".$_POST["prenom"]."\n".$_POST["pays"];
                                    if (@mail($email_webmaster,$_POST["titre"],$message,$entete)){
                            // mail envoyé
                                            echo "Votre message a été envoyé.<br />\n";
                                            echo "<a href=\"".$_SERVER["PHP_SELF"]."\">Envoyer un autre message...</a>\n";

                                    }
                                    else {
                            // erreur lors de l'envoi du mail
                                            echo "Un problème s'est produit lors de l'envoi du message.\n";
                                            echo "<a href=\"".$_SERVER["PHP_SELF"]."\">Réessayez...</a>\n";
                                    }
                            }
                            ?>


                            OU deuxième méthode

                            <?php
                            }
                            else {
                            // le formulaire a été soumis sans erreur, on envoie le mail
                                    $entete = "From: ".$_POST["email_expediteur"]." <".$_POST["email_expediteur"].">\n";
                                    $entete .= "MIME-Version: 1.0";
                                    $message=$_POST["message"]."\n";
                                    $message .=$_POST["telephone"]."\n";
                                    $message .=$_POST["nom"]."\n";
                                    $message .=$_POST["prenom"]."\n";
                                    $message .=$_POST["pays"]."\n";
                                    if (@mail($email_webmaster,$_POST["titre"],$message,$entete)){
                            // mail envoyé
                                            echo "Votre message a été envoyé.<br />\n";
                                            echo "<a href=\"".$_SERVER["PHP_SELF"]."\">Envoyer un autre message...</a>\n";

                                    }
                                    else {
                            // erreur lors de l'envoi du mail
                                            echo "Un problème s'est produit lors de l'envoi du message.\n";
                                            echo "<a href=\"".$_SERVER["PHP_SELF"]."\">Réessayez...</a>\n";
                                    }
                            }
                            ?>


                            Bien sur ce n'est qu'un exemple, il faut que tu fasse la présentation que tu veux en faisant la mise en page de ton message avant de le mettre dans la fonction mail pour les variables, c'est normale car il faut lui dire que les variables $telephone est égale à la variable $_POST["telephone"] avant de l'utiliser. mais surtout si moi même j'ai bien compris le fonctionnement de la fonction mail() ou @mail() il faut que la partie entete qui est ce qui apparait en entête sur les reception de message doit être la dernière variable dans la fonction.

                            Tu trouveras quelque autres possibilités de la fonction mail() ICI

                            • Partager sur Facebook
                            • Partager sur Twitter
                              13 février 2006 à 10:55:26

                              ok ,super ! :)
                              merci encore eguillaume !
                              Ps: je vais employé la premiere methode que tu as donné même si la deuxieme semble correcte egalement.

                              merci encore.
                              • Partager sur Facebook
                              • Partager sur Twitter

                              problème avec mail envoyé par formulaire

                              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                              • Editeur
                              • Markdown