Pb de reception de mail par formulaire

Résolu
Bonjour les experts,
voila, j'ai un petit pb. J'ai réaliser un formulaire de contact tout simple dont voici le code

contact.php
<!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=UTF-8" />
<title>Contact</title>
</head>

<body>
<form method="POST" action="traitement.php" name="contact">
<br> Nom : <input type="text" name="pseudo"><br />
<br>Mail : <input type="text" name="mail"><br />
<br><textarea cols="70" rows="10" name="message">Entrer ici votre message</textarea>
<input type="submit" value="Envoyer"/>
</form>
</body>

</html>

traitement.php
<?php
if(isset($_POST['pseudo']) AND isset($_POST['mail']) AND isset($_POST['message']) )
{
if($_POST['pseudo']!=NULL AND $_POST['mail']!=NULL AND $_POST['message']!=NULL)
{
$pseudo=stripslashes($_POST['pseudo']);
$mail=stripslashes($_POST['mail']);
$message=stripslashes($_POST['message']);

$adresse="mon_adresse@fai.fr";
$titre="Un message de : $pseudo";
$contenu="$pseudo envoie le msg suivant:\n \n $message \n \n E-mail du destinataire : $mail";
$headers='From:"johnson contact" <'.$mail.'>'."\n";

mail($adresse, $titre, $contenu, $headers);

echo "Votre msg a été envoyé";
}
else
{
echo"Votre msg n'a pas été envoyé";
}
}
?>

le pb c'est que je ne reçois aucun mail une fois le formulaire rempli sur internet. je suis poutant hébergé chez un hébergeur.

7 réponses

  1. c'est un probléme d'entête, prend exemple là-dessus :
    https://www.commentcamarche.net/faq/4516-webmaster-un-formulaire-de-contact-pour-votre-site

    cordialement
    0
    1. Contributeur
      Salut,

      Je te conseille de le faire autrement.

      Sur la page où il y a ton formulaire, dans la balise <form> dans l'attribut action

      Tu vas mettre : action="nom_de_ta_page_ou_il_y_a_le_formulaire.php?envoi=1"

      Et endessous de ton formulaire, tu vas mettre le code qu'il y a dans ta page traitement, en mettant le tout dans un if. Je m'explique :

      if(envoi == 1)
      {
      TOUT LE CODE QU'IL Y A SUR TA PAGE TRAITEMENT.PHP
      }


      En somme tu auras su ta page contact.php

      Ton formulaire avec le action="contact.php?envoi=1" dans la balise <form>

      Et en dessous, le code que tu avais avant dans traitement.php dans le if que je t'ai donné juste au dessus.

      Cordialement
      0
      1. j'ai reconfiguré comme tu me l'as dit, mais ca ne marche tjrs pas.je tedonne l'adresse de mon site si tu souhaite faire le test.
        www.johnsoncertification.com puis taper le lien"Qualité"
        de plus il me met un msg erreur sur la variable contact que j'ai introduit (Notice: Undefined variable: envoi in C:\wamp\www\test\contact.php on line 16)

        voici le code modifié :

        <!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=UTF-8" />
        <title>Contact</title>
        </head>

        <body>
        <form method="POST" action="contact.php?envoi=1">
        <br> Nom : <input type="text" name="pseudo"><br />
        <br>Mail : <input type="text" name="mail"><br />
        <br><textarea cols="70" rows="10" name="message">Entrer ici votre message</textarea>
        <input type="submit" value="Envoyer"/>

        <?php
        if(envoi == 1)
        {
        if(isset($_POST['pseudo']) AND isset($_POST['mail']) AND isset($_POST['message']) )
        {
        if($_POST['pseudo']!=NULL AND $_POST['mail']!=NULL AND $_POST['message']!=NULL)
        {
        $pseudo=stripslashes($_POST['pseudo']);
        $mail=stripslashes($_POST['mail']);
        $message=stripslashes($_POST['message']);

        $adresse="contacts@johnsoncertification.com";
        $titre="Un message de : $pseudo";
        $contenu="$pseudo envoie le msg suivant:\n \n $message \n \n E-mail du destinataire : $mail";
        $headers='From:"johnson contact" <'.$mail.'>'."\n";

        mail($adresse, $titre, $contenu, $headers);

        echo "Votre msg a été envoyé";
        }
        else
        {
        echo"Votre msg n'a pas été envoyé";
        }
        }
        }
        ?>

        </form>

        </body>

        </html>
        0
    2. Contributeur
      Oups. C'est moi qui ai fait une faute.

      Dans le if que je t'ai donné, il faut juste rajouter le '$' à envoi pour lui dire que c'est une variable.

      donc tu auras :
      
      if($envoi ==1) 
      { 
      Etc etc ... 


      Encore désolé. Ca devrait marcher maintenant.

      Si un jour, l'envie de travailler te prends, assied-toi et attends que ca passe ...
      Les boulets, on ne les aime que dans les quotes ! Merci
      0
      1. en rajoutant $ le msg d'erreur reste tjrs le même
        0
      2. contact.php
        0
      3. trop sympa!!!
        0
      4. cool!

        je teste et te tiens au courant

        Will...
        0
    3. Contributeur
      Comment s'appelle la page sur laquelle tu as mis ce code ?
      0
      1. Contributeur
        Je te le corrige, je le teste, et je te l'envoie ;)
        0
        1. Contributeur
          Voilà, j'ai trouvé le problème !

          Désolé pour le temps aussi, j'ai eu un imprévu.

          Donc le problème venait de la syntaxe lors de la définition de tes variables $destinataire, $headers, etc etc ...
          Si tu as besoin de précisions quant à la syntaxe, n'hésite pas à repasser ici.

          Je l'ai complètement codé pour toi, avec ton adresse mail, tu n'as plus qu'à le mettre dans ta page contact.php en supprimant tout ce qu'il y avait avant.

          J'ai également apporté des modifications pratiques :

          - L'encodage, il ne reconnaissait pas les accents avant.
          - La sécurisation des formulaires, qui empêche l'auteur du message d'inclure du HTML qui pourrait nuire à la page Web, ou au mail.
          - L'ajout d'alerte en JavaScript qui affiche si le message a bien été envoyé ou s'il y a une erreur.
          - La suppression du message "Entrez votre message ici" lorsqu'on clique dans la zone de texte.

          Voici le code :

          <!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>Contact</title> 
          </head> 
          
          <body> 
          <form method="POST" action="contact.php?envoi=1"> 
          <br> Nom : <input type="text" name="pseudo"><br /> 
          <br>Mail : <input type="text" name="mail"><br /> 
          <br><textarea cols="70" rows="10" name="message" onFocus="if(this.value=='Entrez ici votre message')this.value=''">Entrez ici votre message</textarea> <br>
          <input type="submit" value="Envoyer"/>
          
          <?php 
          			
          
          
          if($envoi == 1) 
          { 
          
          			
          if(isset($_POST['pseudo']) AND isset($_POST['mail']) AND isset($_POST['message']) ) 
          { 
          if($_POST['pseudo'] != NULL AND $_POST['mail'] != NULL AND $_POST['message'] != NULL) 
          { 
          
          			$pseudo = htmlspecialchars($_POST['pseudo']);
          			$mail = htmlspecialchars($_POST['mail']);
          			$message = htmlspecialchars(stripslashes($_POST['message']));
          
          			$destinataire = 'contacts@johnsoncertification.com';
          			$sujet = 'Un message de : '.$pseudo;
          			$entetes = 'From: '.$mail;
          			$contenu = $pseudo.' envoie le msg suivant:
          			'.$message.'
          			
          			E-mail du destinataire : '.$mail; 
          			mail($destinataire, $sujet, $contenu, $entetes);
          
          ?> 
          						<script language="JavaScript1.2">
          						{
          						alert('Votre message a bien été envoyé. Nous tâcherons d\'y répondre dans les plus brefs délais.');
          						}
          						</script>
          	
          				<?php			
          			
          			}
          			else
          			{
          			?> 
          						<script language="JavaScript1.2">
          						{
          						alert('Tous les champs sont obligatoires. Veuillez recommencer.');
          						}
          						</script>
          	
          			<?php
          				
          			}
          	}
          }
          ?> 
          
          
          </form> 
          
          </body> 


          Si tu as des soucis, ou des questions, contacte-moi ;)

          Cordialement
          a70m
          0
          1. ca bug tjrs au niveau de l'envoi sur mon adresse email
            0
          2. Contributeur
            C'est ton adresse qui bugue alors. J'ai testé la page avec mon mail, ça marchait.
            0
          3. je te remercie bcp. je vais voir du coté de mon adresse

            ciao!!!!
            0