[HTML] Formulaire HTML probléme

Bonjour a toutes et a tous, voici déja 2 jours que je me prend la tête avec mon fichier HTML, je vous explique:

Je veux creer un formulaire uniquement en HTML.
Donc pour sa je creer les parties du formulaire:

-NOM
-PRENOM
-E-MAIL
---ENVOYER---

Mais le probléme c'est que j'arive pas a me faire envoyé directement le formulaire sur ma boite e-mail !!!
Quand la personne clik sur ENVOYER je veut recevoir immédiatement le formulaire !!
Voici mon HTML:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<TITLE>MON - Formulaire HTML</TITLE>
<LINK REV="made" HREF="mailto:MONMAIL@DOMAINE.FR">
</HEAD>
<BODY BACKGROUND="../papier.gif">
<H1>Envoyez-moi vos commentaires...</H1>
<H3>&nbsp;&nbsp;&nbsp;&nbsp;non ? alors <A HREF="#">#</A></H3><CENTER>#<BR>
#</CENTER>
<FORM METHOD="POST" ACTION="MONMAIL@DOMAINE.FR">
<INPUT TYPE="hidden" NAME="retour" VALUE="#"><TABLE>
<TR>
<TD>Votre nom :</TD>
<TD><INPUT TYPE="text" NAME="nom" SIZE="40"></TD>
</TR>
<TR>
<TD>Votre adresse Email :</TD>
<TD><INPUT TYPE="text" NAME="email" SIZE="40"></TD>
</TR>
</TABLE>
&nbsp;Vos remarques, commentaires, ...:
  <BR>
  <TEXTAREA NAME="note" ROWS="10" COLS="60"></TEXTAREA>
  
  <P>
  Pour envoyer votre message&#160;: <INPUT TYPE=submit VALUE="Envoyer">
  Pour tout effacer&#160;: <INPUT TYPE=reset VALUE="Effacer">
  </FORM>
<HR SIZE=5 NOSHADE>
<B>Contact :
</B><A HREF="mailto:MONMAIL@DOMAINE.FR">MONMAIL@DOMAINE.FR</A>
<IMG SRC="../blank.gif" WIDTH="2" HEIGHT="2" ALT="">&nbsp;
<B>Informations&nbsp;:&nbsp;</B>
<A HREF="../intro.shtml"><IMG SRC="../info3.gif" WIDTH="40" HEIGHT="40" ALT="[infos]" ALIGN="Middle"></A>
<IMG SRC="../blank.gif" WIDTH="2" HEIGHT="2" ALT=""><BR>
<A HREF="http://validator.w3.org/check/referer"><IMG BORDER=0 SRC="../vh32.gif" ALT="[Validation&nbsp;HTML&nbsp;3.2!]" HEIGHT=31 WIDTH=88></A>
</BODY>
</HTML>
Configuration: Windows XP
Internet Explorer 7.0

28 réponses

Résumé de la discussion

Le problème principal est qu'un formulaire HTML seul ne peut pas envoyer un message sur une boîte mail sans traitement côté serveur, et les solutions basées sur mailto ou HTML pur restent défaillantes. La meilleure réponse recommande d'utiliser un script côté serveur, par exemple PHP avec la fonction mail(), pour composer l'en-tête, le corps du message et acheminer l'e-mail au destinataire. Le script contribue à la soumission en transmettant le destinataire et l'en-tête, enregistre la date et l'heure, puis assemble le corps du message avec les champs nom, prénom, adresse, email et texte. En cas de configuration, il faut que le serveur accepte l'envoi de mails via PHP et que les variables du formulaire soient définies pour éviter les erreurs.

Bobot (l’IA à votre service)
  1. Super... j'ai été long a comprendre mais ca marche très bien. Merci...

    3 questions :

    - J'ai viré " $headers = "Content-type: text/html; charset=iso-8859-1\r\n"; " ce qui me permet d'avoir l'adresse de l'expéditeur en entête et donc de faire "répondre" pour envoyer une réponse directement...

    Le problème c'est que les caractères accentués (je veux souligné "Message reçu de la part de :"), dans le cas présent la balise <u> </u>, n'est plus reconnue... avez vous une solution ?

    - je pense que c'est avec cette modif que dans le corps du message les sauts à la ligne sont respectés mais ils sont doubles !!! Comment faire ?

    - enfin, dernière question : comment faire pour passer sur une autre page lorsque le message est envoyé ?

    Voici mon code final :

    <?php
    // si le formulaire a été posté
    if(isset($_POST["form_valid"]))
    {
    $nom = $_POST["nom"];
    $email = $_POST["email"];
    $note = $_POST["note"];
    // on prépare l'envoi

    $headers .= "From: $email <$email>";

    // on déclare le destinaire
    $destinataire = "dutour@gmail.com";
    // on déclare le sujet
    $sujet = "Message reçu du site The Link #2";
    // on remplace les retours chariots par <br>
    $note = str_replace('\r\n','<br>',$note);

    // on déclare le message

    $msg = "Message reçu de la part de : $nom, \r\n Son message est le suivant : \r\n $note";

    // si jamais il se produit une erreur
    if(!mail($destinataire, $sujet, $msg, $headers)) header("Location:contact.php?message=erreur");
    // sinon on valide
    header("Location:contact.php?message=ok");
    }
    ?>

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <META http-equiv="Content-Type" Content="text/html; charset=ISO-8859-1">
    <TITLE> Formulaire de contact</TITLE>

    <script type="text/javascript">
    function valider_envoi(frm)
    {
    if((frm.elements['nom'].value != "") & (frm.elements['note'].value !="") & (frm.elements['email'].value !=""))
    {
    return true;
    }
    else
    {
    alert(" Veuillez remplir correctement svp");
    return false;
    }
    }
    </script>
    </HEAD>
    <body alink="#000099" background="image001.jpg" bgcolor="#ffffff"
    link="#000099" text="#000000" vlink="#990099" bgproperties="fixed">
    <p class="MsoNormal" style="margin-bottom: 12pt; text-align: center;"
    align="center"><span class="SpellE"><b><i><span
    style="font-size: 18pt; font-family: Wedgie; color: blue;">Contactez-nous </span></i></b></span></p>

    <?php
    // si on reçoit un message
    if(isset($_GET["message"]))
    {
    if($_GET["message"] == "ok") echo "Votre message est parti correctement, Merci.";
    else echo "Erreur, retentez l'opération";
    }
    ?>

    <form action="contact.php" method="post" onsubmit="return valider_envoi(this)">
    <INPUT TYPE="hidden" NAME="retour" VALUE="#">
    <TABLE>
    <INPUT TYPE="hidden" NAME="form_valid" value="true">
    <TR><br>
    <TD><p style="padding-left: 100px"><span style="color: blue;"><b>Votre nom :</TD>
    <TD><INPUT TYPE="text" NAME="nom" SIZE="40"></TD>
    </TR>
    <TR>
    <TD><p style="padding-left: 100px"><span style="color: blue;"><b>Votre adresse Email :</TD>
    <TD><INPUT TYPE="text" NAME="email" SIZE="40"></TD>
    </TR>
    </TABLE>
    <br><p style="padding-left: 100px"><span style="color: blue;"><b>Vos commentaires :
    <p style="padding-left: 100px"><TEXTAREA NAME="note" ROWS="10" COLS="60"></TEXTAREA></p>

    <P>
    <p style="padding-left: 100px">Pour envoyer votre message : <INPUT TYPE=submit VALUE="Envoyer">
    Pour tout effacer : <INPUT TYPE=reset VALUE="Effacer">
    </FORM>
    <HR SIZE=5 NOSHADE>
    <p style="padding-left: 100px"><B>Contact :
    </B><A HREF="mailto: dutour@gmail.com">dutour@gmail.com</A>

    </BODY>
    </HTML>


    Question subsidiaire : alignement différent entre I.E. et firefox

    Merci d'avance
    1. Contributeur
      ou alors puisque ton hebergeur ne permet pas l'utilisation de la fonction mail(), tu peux utiliser un service de script cgi (par exemple http://www.lecgi.net/ ). C'est ce que j'ai fait sur un site, exemple ici : http://marmottemanu.free.fr/mail.php . Et je n'ai jamais été spammé par cette méthode.
      1. ahh bah voila pourquoi sa marche pas lol, maintenant faut que je trouve un hebergeur qui bloque pas la fonction mail ...
        1. Oups,

          je suis désolé pour toi mais tout est expliqué là :

          http://mysql.ifrance.com/showpost.php?p=2162&postcount=3

          Bonne chance pour la suite :)

          Thomas
          1. Non je vois pas,

            je viens de tester le formulaire pour moi même je reçois le mail instantanément.

            Il ne devrait théoriquement y avoir aucun problème.

            Thomas
            1. Non je n'est aucun message d'érreur tout fonctionne bien, sauf l'e-mail lol mais sinon ya pas un moyen pour que sa arive plus vite ?
              1. Tu n'as aucun message d'erreur rien du tout ?

                Tout devrait fonctionner correctement théoriquement. Peut être aussi que les mails mettent du temps à arriver.

                Thomas
                1. je l'ai mis sur mon ftp ifrance comme ceci:

                  http://monpseudo.ifrance.com/contact.php
                  1. Merci pour t'es réponse rapide, j'ai essayé ton php il marche mais je ne recois pas le formulaire sur ma boite mail, j'ai bien évidement remplacer le "tonadresse@domaine.fr" par mon e-mail mais rien...
                    1. Donne à ta page le nom contact.php et rempli comme suit :

                      <?php
                      // si le formulaire a été posté
                      if(isset($_POST["form_valid"]))
                      {
                      $nom = $_POST["nom"];
                      $email = $_POST["email"];
                      $note = $_POST["note"];
                      // on prépare l'envoi
                      $headers = "Content-type: text/html; charset=iso-8859-1\r\n";
                      $headers .= "From: $email <$email>\r\n";
                      // on déclare le destinaire
                      $destinataire = "tonadresse@domaine.fr";
                      // on déclare le sujet
                      $sujet = "Message reçu du site ...";
                      // on remplace les retour charriots par <br>, même que c'est mieux !
                      $note = str_replace('\r\n','<br>',$note);
                      $note = str_replace('\\','',$note);
                      // on déclare le message
                      $msg = "Message reçu de la part de : $nom ($email), <br>Son message est le suivant :<br><br>$note<br><br>-- Fin du message --";
                      // si jamais il se produit une erreur
                      if(!mail($destinataire, $sujet, $msg, $headers)) header("Location:contact.php?message=erreur");
                      // sinon on valide
                      header("Location:contact.php?message=ok");
                      }
                      ?>
                      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
                      <HTML>
                      <HEAD>
                      <TITLE>BRIBES - Formulaire HTML</TITLE>
                      <script type="text/javascript">
                      function valider_envoi(frm)
                      {
                      if((frm.elements['nom'].value != "") & (frm.elements['note'].value !="") & (frm.elements['email'].value !=""))
                      {
                      return true;
                      }
                      else
                      {
                      alert(" Veuillez remplir correctement svp");
                      return false;
                      }
                      }
                      </script>
                      </HEAD>
                      <BODY BACKGROUND="../papier.gif">
                      <?php
                      // si on reçoit un message
                      if(isset($_GET["message"]))
                      {
                      if($_GET["message"] == "ok") echo "Votre message est parti correctement, Merci.";
                      else echo "Erreur, retentez l'opération";
                      }
                      ?>
                      <H1>Envoyez-moi vos commentaires...</H1>
                      <H3>    non ? alors <A HREF="#">#</A></H3><CENTER>#<BR>
                      #</CENTER>
                      <form action="contact.php" method="post" onsubmit="return valider_envoi(this)">
                      <INPUT TYPE="hidden" NAME="retour" VALUE="#"><TABLE>
                      <INPUT TYPE="hidden" NAME="form_valid" value="true">
                      <TR>
                      <TD>Votre nom :</TD>
                      <TD><INPUT TYPE="text" NAME="nom" SIZE="40"></TD>
                      </TR>
                      <TR>
                      <TD>Votre adresse Email :</TD>
                      <TD><INPUT TYPE="text" NAME="email" SIZE="40"></TD>
                      </TR>
                      </TABLE>
                       Vos remarques, commentaires, ...:
                      <BR>
                      <TEXTAREA NAME="note" ROWS="10" COLS="60"></TEXTAREA>

                      <P>
                      Pour envoyer votre message : <INPUT TYPE=submit VALUE="Envoyer">
                      Pour tout effacer : <INPUT TYPE=reset VALUE="Effacer">
                      </FORM>
                      <HR SIZE=5 NOSHADE>
                      <B>Contact :
                      </B><A HREF="mailto:monmail@domaine.fr">monmail@domaine.fr</A>
                      <IMG SRC="../blank.gif" WIDTH="2" HEIGHT="2" ALT=""> 
                      <B>Informations : </B>
                      <A HREF="../intro.shtml"><IMG SRC="../info3.gif" WIDTH="40" HEIGHT="40" ALT="[infos]" ALIGN="Middle"></A>
                      <IMG SRC="../blank.gif" WIDTH="2" HEIGHT="2" ALT=""><BR>
                      <A HREF="http://validator.w3.org/check/referer"><IMG BORDER=0 SRC="../vh32.gif" ALT="[Validation HTML 3.2!]" HEIGHT=31 WIDTH=88></A>
                      </BODY>
                      </HTML>

                      Courage !

                      Thomas
                      1. Ok je t'explique, a la base je voulait faire un formulaire uniquement HTML avec une fonction d'envoi du formulaire directement sur ma boite mail, donc se script:

                        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
                        <HTML>
                        <HEAD>
                        <TITLE>BRIBES - Formulaire HTML</TITLE>
                        <LINK REV="made" HREF="mailto:monmail@domaine.fr">
                        </HEAD>
                        <BODY BACKGROUND="../papier.gif">
                        <H1>Envoyez-moi vos commentaires...</H1>
                        <H3>&nbsp;&nbsp;&nbsp;&nbsp;non ? alors <A HREF="#">#</A></H3><CENTER>#<BR>
                        #</CENTER>
                        <form action="mailto:monmail@domaine.fr" method="post"> 
                        <INPUT TYPE="hidden" NAME="retour" VALUE="#"><TABLE>
                        <TR>
                        <TD>Votre nom :</TD>
                        <TD><INPUT TYPE="text" NAME="nom" SIZE="40"></TD>
                        </TR>
                        <TR>
                        <TD>Votre adresse Email :</TD>
                        <TD><INPUT TYPE="text" NAME="email" SIZE="40"></TD>
                        </TR>
                        </TABLE>
                        &nbsp;Vos remarques, commentaires, ...:
                          <BR>
                          <TEXTAREA NAME="note" ROWS="10" COLS="60"></TEXTAREA>
                          
                          <P>
                          Pour envoyer votre message&#160;: <INPUT TYPE=submit VALUE="Envoyer">
                          Pour tout effacer&#160;: <INPUT TYPE=reset VALUE="Effacer">
                          </FORM>
                        <HR SIZE=5 NOSHADE>
                        <B>Contact :
                        </B><A HREF="mailto:monmail@domaine.fr">monmail@domaine.fr</A>
                        <IMG SRC="../blank.gif" WIDTH="2" HEIGHT="2" ALT="">&nbsp;
                        <B>Informations&nbsp;:&nbsp;</B>
                        <A HREF="../intro.shtml"><IMG SRC="../info3.gif" WIDTH="40" HEIGHT="40" ALT="[infos]" ALIGN="Middle"></A>
                        <IMG SRC="../blank.gif" WIDTH="2" HEIGHT="2" ALT=""><BR>
                        <A HREF="http://validator.w3.org/check/referer"><IMG BORDER=0 SRC="../vh32.gif" ALT="[Validation&nbsp;HTML&nbsp;3.2!]" HEIGHT=31 WIDTH=88></A>
                        </BODY>
                        </HTML>
                        


                        Aprés j'ai été sur un site qui proposé un formulaire avec fonction d'envoi en php

                        <?php 
                        if($Submit) { 
                        
                        $recipient="<monmail@domaine.fr>"; 
                        $header="From: ".$email. "\n"; 
                        $date = date("d-m-Y"); 
                        $heure = date("H:i:s"); 
                        echo 'Envoyé le'.$date.'<br>'; 
                        echo 'Il est '.$heure; 
                        
                        
                        $mail_body.="Inscription:\n\n"; 
                        $mail_body.="Nom: ".$name."\n"; 
                        $mail_body.="Prénom: ".$naam1."\n"; 
                        $mail_body.="Adresse: ".$adress."\n"; 
                        $mail_body.="Code Postal: ".$copo."\n"; 
                        $mail_body.="Commune: ".$com."\n"; 
                        $mail_body.="E-mailadres: ".$email."\n\n"; 
                        $mail_body.="Message:\n"; 
                        $mail_body.=$bericht."\n\n - fin du message -"; 
                        mail($recipient, $subject, $mail_body, $header); 
                        
                        } 
                        ?> 
                        


                        Et donc je voudrai avoir une page avec les champs suivant a remplir:

                        -NOM
                        -PRENOM
                        -EMAIL
                        -COMMENATIRES
                        ------ENVOYER------
                        avec la fonction envoi direct du formulaire par mail :)
                        1. Attends je sais pas bien,

                          comme ça se passe, tu as ta page contact.php et un fichier send.php ?

                          Donne nous la totalité des éléments même si ils sont sur plusieurs pages.

                          Thomas
                          1. <?php 
                            if($Submit) { 
                            
                            $recipient="<monmail@domaine.fr>"; 
                            $header="From: ".$email. "\n"; 
                            $date = date("d-m-Y"); 
                            $heure = date("H:i:s"); 
                            echo 'Envoyé le'.$date.'<br>'; 
                            echo 'Il est '.$heure; 
                            
                            
                            $mail_body.="Inscription:\n\n"; 
                            $mail_body.="Nom: ".$name."\n"; 
                            $mail_body.="Prénom: ".$naam1."\n"; 
                            $mail_body.="Adresse: ".$adress."\n"; 
                            $mail_body.="Code Postal: ".$copo."\n"; 
                            $mail_body.="Commune: ".$com."\n"; 
                            $mail_body.="E-mailadres: ".$email."\n\n"; 
                            $mail_body.="Message:\n"; 
                            $mail_body.=$bericht."\n\n - fin du message -"; 
                            mail($recipient, $subject, $mail_body, $header); 
                            
                            } 
                            ?> 
                            
                            • 1
                            • 2