Pb de reception de mail par formulaire

Résolu
willy -  
a70m Messages postés 3121 Statut Contributeur -
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. bqst Messages postés 61 Date d'inscription   Statut Membre Dernière intervention   24
     
    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
  2. a70m Messages postés 3121 Statut Contributeur 217
     
    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. willy
       
      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
  3. a70m Messages postés 3121 Statut Contributeur 217
     
    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. willy
       
      en rajoutant $ le msg d'erreur reste tjrs le même
      0
    2. willy
       
      contact.php
      0
    3. willy
       
      trop sympa!!!
      0
    4. willy
       
      cool!

      je teste et te tiens au courant

      Will...
      0
  4. a70m Messages postés 3121 Statut Contributeur 217
     
    Comment s'appelle la page sur laquelle tu as mis ce code ?
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. a70m Messages postés 3121 Statut Contributeur 217
     
    Je te le corrige, je le teste, et je te l'envoie ;)
    0
  7. a70m Messages postés 3121 Statut Contributeur 217
     
    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. willy
       
      ca bug tjrs au niveau de l'envoi sur mon adresse email
      0
    2. a70m Messages postés 3121 Statut Contributeur 217
       
      C'est ton adresse qui bugue alors. J'ai testé la page avec mon mail, ça marchait.
      0
    3. willy
       
      je te remercie bcp. je vais voir du coté de mon adresse


      ciao!!!!
      0
  8. a70m Messages postés 3121 Statut Contributeur 217
     
    Derien :)
    0