Envoyer un mail avec un formulaire

-  
Bonjour,

ne connaissant pas cette capacité du php qui est d'envoyer un mail via un formulaire, j'ai suivi un tutoriel :

http://creer-un-site.fr

malheureusement, mon envoi ne se réalise pas :(

si vous aviez 5 petites minutes pour me dire ce qui cloche, je vous en serais vraiment reconnaissant

voici mon Formulaire :

<form action="NousContacter.php" method="POST" >
<tr><td>Nom :</td></tr>
<tr><td><input type="text" name="nom_contact"></td></tr>
<tr></tr>
<tr><td>Prénom :</td></tr>
<tr><td><input type="text" name="prenom_contact"></td></tr>
<tr></tr>
<tr><td>Mail :</td></tr>
<tr><td><input type="text" name="mail_contact"></td></tr>
<tr><td>Tel : </td></tr>
<tr><td><input type="text" name="tel_contact"></td></tr>
<tr><td>Est-ce pour un devis ?<input type="radio" name="devis_contact">Oui <input type="radio" name="devis_contact">Non </td></tr>
<tr></tr>
<tr><td>Demande de renseignement</td></tr>
<tr><td><textarea name="message_contact" rows="8" cols="50"></textarea></td></tr>
<tr></tr>
<tr><td><input type="submit" name="Envoyer" value="Envoyer"></td>
<td><input type="reset" name="Effacer" value="Effacer"></td></tr>
<tr></tr>
</form>

et mon code PHP :

<?php
if(isset($_POST["Envoyer"]))
{ $nom_contact = stripslashes($_POST["nom_contact"]);
$prenom_contact = stripslashes($_POST["prenom_contact"]);
$mail_contact = stripslashes($_POST["mail_contact"]);
$tel_contact = stripslashes($_POST["tel_contact"]);
$devis_contact = stripslashes($_POST["devis_contact"]);
$message_contact = stripslashes($_POST["message_contact"]);
$mon_e_mail = xxx@xxx.fr //e_mail de test
$mon_url = "http://url_de_mon_site.fr"; //non défini car pas encore en ligne

if(empty($nom_contact)){
echo 'Vous avez oublié votre nom. <br/>';
}

elseif(empty($prenom_contact)){
echo 'Vous avez oublié votre prénom.<br/>';
}

elseif(empty($mail_contact)){
echo 'Vous avez oublié de préciser votre adresse mail.<br/>';
}

elseif(empty($tel_contact)){
echo 'Veuillez noter votre numéro de téléphone.<br/>';
if(!preg_match(''[0-9]{10}'',$tel_contact));echo "Ce numéro de téléphone n'est pas valide.<br/>";}

elseif(empty($devis_contact)){
echo 'Veuillez préciser la raison de votre contact.<br/>';
}

else if(empty($message_contact)){
echo 'Veuillez écrire votre message.<br/>';
}
else{
// Envoie du mail
$entete = "From: " . $mail_contact . " <" . $mon_e_mail . ">\n";
$entete= "MIME-Version: 1.0";
<" . $nom_contact . ">/n";"
<" . $prenom_contact . ">/n";"
<" . $tel_contact . ">/n";
$message = . $message_contact .

if (mail($mail_contact,$mon_e_mail,$nom_contact,$prenom_contact,$tel_contact,$message_contact)){
echo "Votre message a été envoyé.<br />\n";
echo "<a href=\"" . $mon_url . "\">Retour</a>\n";
}
else {
echo "Un problème s'est produit lors de l'envoi du message.\n";
echo "<a href=\"".$_SERVER["PHP_SELF"]."\">Réessayez</a>\n";
}
//on ferme le else
}

//on ferme if(isset($_POST["Envoyer"]))
}
?>

--
Cordialement, Debutant en webmastering

9 réponses

  1. Bonjour,

    Le code fonctionne très bien à l'origine. Dans votre code, vous avez oublié des guillemets
    $mon_e_mail = xxx@xxx.fr

    ou alors vous en ajoutez la ou il ne faut pas
    <" . $nom_contact . ">/n";" 

    ou vous oubliez des points virgules
    $message = . $message_contact . 

    vous oubliez de concaténer la variable $entete ...
    Une question stupide engendre une réponse stupide!
    Une question mal formulé engendre une réponse aléatoire!
    0
    1. effectivement, les guillements ont été oubliées lorsque j'ai réécrit les xxx@xxx.fr pour ne pas divulguer mon adresse et pour ce qui est du reste voici les modifications :

      // Envoie du mail
      		$entete = "From: " . $mail_contact .  < . $mon_e_mail . >\n;
      		. $entete . = "MIME-Version: 1.0";
      		< . $nom_contact . 	>/n;
      		< . $prenom_contact . 	>/n;
      		< . $tel_contact .		>/n;
      		$message = . $message_contact .;
      

      Cordialement, Debutant en webmastering
      0
      1. Dans l'entête, c'est l'mail du correspondant par le votre.
        $entete = "From: " . $mon_pseudo . " <" . $son_email . ">\n"; 
        $entete .= "MIME-Version: 1.0"; 
        

        Ensuite, $message est faux.
        $message =  $message_contact ;

        Dailleurs cette variable ne sert à rien puisque vous pouvez l'envoyer directement dans la fonction mail() en utilisant directement la variable $message_contact.

        Pour finir, au lieu de tenter d'insérer certaines données dans l'entête, insérer les plutôt dans le message :

        $message .=  " ".$message_contact."\n" ; 
        $message .= "Nom : ".$nom_contact."\n"; 
        $message .= "Nom : ".$prenom_contact."\n"; 
        //etc


        Puis dans l'envoie du mail
        if (@mail($mon_email,$objet,$message,$entete)) 

        Une question stupide engendre une réponse stupide!
        Une question mal formulé engendre une réponse aléatoire!
        0
        1. Ah, c'est vrai que je n'ais pas exposé mes intentions quant à ce formulaire.
          En fait j'ai créé un petit site pour une entreprise et ce formulaire aura pour but de les contacter donc

          $entete = "From: " . $mail_contact . me semble justifié car la personne donne son mail pour que l'on puisse la recontacter mais le problème (et c'est justement ce que je n'ais pas compris dans le tutoriel c'est à quelle adresse on envoie le tout; je pensais que $entete = "From: " . $mail_contact . < . $mon_e_mail . >\n; renseignait 1èrement le mail de la personne qui écrivait ($mail_contact) et ensuite le destinataire (. $son_email .)
          0
          1. $entete = "From: " . $mon_pseudo . " <" . $son_email . ">\n";

            $mon_pseudo = pseudo de l'envoyeur.
            $son_email = email de la personne qui envoie.
            Dans l'envoie :
            if (@mail($mon_email,$lechamp1,$lechamp2,$entete))

            Il faut remplacer $mon_email par $son_email.
            Le code ci-dessus correspond à :
            if (@mail(mail du destinataire,objet du message,message, entête))


            Une question stupide engendre une réponse stupide!
            Une question mal formulé engendre une réponse aléatoire!
            0
            1. non justement, c'est là que je n'ais pas dû être assez clair, en 1er lieu, j'ai
              $mon_e_mail (qui sera celle de l'entreprise) et c'est justement à cette adresse que je souhaite envoyer (le formulaire sert à envoyer la demande du client à l'entreprise qui elle renverra les informations par simple boîte mail)

              désolé de ne pas avoir été clair dès le début :( et j'espère que ça l'est plus maintenant
              0
              1. Donc $mon_e_mail vient en premier dans la fonction mail
                if (@mail($mon_e_mail,objet du message,message, entête))
                0
                1. tu as raison, je crois que je vais oublier cette histoire d'entête et tout mettre directement dans mon message

                  et encore merci pour ton aide
                  0
                  1. juste une question, pourquoi lorsque j'appuie sur Envoyer cela m'affiche mon code php ??

                    Cordialement, Debutant en webmastering
                    0
                    1. hum wamp non actif ...
                      0