Envoyer un mail depuis un formulaire de contact

Résolu
Dnartreb -  
jordane45 Messages postés 40050 Statut Modérateur -
Bonjour à tous,
J'ai créer un formulaire de contact en HTML et tout une partie en PHP pour envoyer un mail... J'avais réussi mais cela ne me convenait pas donc j'ai recommencé et maintenant je bloque.
Je vous mets mon code ci-dessous, si vous savez jeter un coup d’œil et me dire mes éventuelles erreurs; ça m'aiderais beaucoup!
Remarque: Je traite tout sur la même page.
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Nous contacter</title>
</head>
  
<body>
  <br>
    
<form method="post" action="guillaume.php">
    <label for="name">Nom:</label>
    <input type="text" name="name" id="name" required placeholder="Nom" />
     
    <label for="subject">Objet Du Message:</label>
    <input type="text" name="subject" id="subject" required placeholder="Sujet" />
     
    <label for="email">Email:</label>
    <input type="email" name="email" id="email" required placeholder="***@***" />
     
    <label for="message">Message:</label>
    <textarea name="message" id="message" required></textarea>
     
  	<div style="margin-left: 29%;"class="boutton">
    <input type="submit" value="Envoyer votre message" />
  </div>
</form>  
  
  
  <?php
	$destinataire = 'b.guillaume***@hotmail.com';
	$expediteur = $_POST['email'];	
	$objet = $_POST['subject'];
	$headers .= 'To: '.$destinataire."\n"; // Mail de reponse
	$headers .= 'From: '.$expediteur.''."\n"; // Expediteur
	$message1 = 	"L'auteur du mail est:".$_POST['name'].;
	$message2 = 	'Voici son mail:'.$_POST['message'].;
	
 	if(mail($destinataire, $objet, $message1, $message2, $headers))
	{
		echo '<script languag="javascript" >alert("Votre message a bien été envoyé ");</script>';
	}
	else // Non envoyé
	{
		echo '<script languag="javascript">alert("Votre message n\'a pas pu être envoyé");</script>';
	}
	header('Location: guillaume.php');
?>  
</body>    
</html>


Je souhaite recevoir un mail avec le nom, l'email, le message que la personne a renseigné dans le formulaire. A ce stade, quand je clique sur le bouton pour envoyer le message, j'ai cette erreur:
Parse error: syntax error, unexpected ';' in /homepages/22/d767857963/htdocs/organisation/V2tousmembres/contacter/guillaume.php on line 73
(La ligne 73, correspond à la ligne: $message1 = "L'auteur du mail est:".$_POST['name'].;)

Merci d'avance pour vos idées, vos aides, vos conseils... :)
Configuration: Windows / Firefox 65.0

2 réponses

jordane45 Messages postés 40050 Statut Modérateur 4 756
 
essaye ça
  <?php
 $destinataire = 'b.guillaume***@hotmail.com';
 $expediteur = !empty($_POST['email']) ? $_POST['email'] : NULL; 
  $objet = !empty($_POST['subject']) ? $_POST['subject'] : '',
  $name = !empty($_POST['name']) ? $_POST['name'] : '',
  $message = !empty($_POST['message']) ? $_POST['message'] : '';
  
  
  if(!empty($expediteur) && !empty($objet)){ // si l'utilisateur a saisi des infos...
    //----------- headers -------------//
    $headers = "MIME-Version: 1.0 \r\n";
    $headers .= 'To: '.$destinataire."\n"; // Mail de reponse
    $headers .= "From: \"$expediteur\"<$expediteur>"."\n";
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-type: text/html; charset: utf8\r\n";

    //------- message --------------------//
    $message1 =  "L'auteur du mail est: ".htmlspecialchars($name);
    $message2 =  'Voici son mail: '.htmlspecialchars$message);
      
    $msgHtml = "<html>
    <body>
      <div>
       ".$message1."
      </div>
      <div>
       <pre>
       ".$message2."
      </pre>
      </div>
    </body>
    </html>";  
   
    //- ---------- Envoie du mail  --------------// 
    if(mail($destinataire, $objet, $msgHtml, $headers)){
      echo '<script languag="javascript" >alert("Votre message a bien été envoyé ");</script>';
      header('Location: guillaume.php');
      exit();
    } else {// Non envoyé
      echo '<script languag="javascript">alert("Votre message n\'a pas pu être envoyé");</script>';
    }
  
 }
?> 
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Nous contacter</title>
</head> 
<body>
  <br>
 
  <form method="post" action="">
    <label for="name">Nom:</label>
    <input type="text" name="name" id="name" required placeholder="Nom" value="<?php echo $name;?>"/>
     
    <label for="subject">Objet Du Message:</label>
    <input type="text" name="subject" id="subject" required placeholder="Sujet" value="<?php echo $objet;?>"/>
     
    <label for="email">Email:</label>
    <input type="email" name="email" id="email" required placeholder="***@***"  value="<?php echo $expediteur;?>"/>
     
    <label for="message">Message:</label>
    <textarea name="message" id="message" required>"<?php echo $message;?>"</textarea>
     
   <div style="margin-left: 29%;"class="boutton">
      <input type="submit" value="Envoyer votre message" />
    </div>
  </form>  
</body>    
</html>


Tu noteras au passage que tu avais des points en trop à la fin des lignes
$message1 =  "L'auteur du mail est:".$_POST['name'].;
 $message2 =  'Voici son mail:'.$_POST['message'].;


1
Gui4671 Messages postés 33 Statut Membre
 
Merci, cela fonctionne...
Je n'ai plus qu'à le comprendre pour le futur! Encore merci et passe une bonne soirée :)
0
Fanou_ezechiel Messages postés 4 Statut Membre
 
S'il vous, j'ai essayer votre code de réponse mais la ligne où j'ai écrire :
$msgHtml =<html> me met erreur.
Que faire
0
jordane45 Messages postés 40050 Statut Modérateur 4 756 > Fanou_ezechiel Messages postés 4 Statut Membre
 
Petiy oubli de parenthèse a la ligne d'au dessus
$message2 =  'Voici son mail: '.htmlspecialchars($message);
      

0
jordane45 Messages postés 40050 Statut Modérateur 4 756
 
Bonjour
Commence par ça
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code

Tu verras apparaître une erreur (au niveau de ta variable headers)
0
Gui4671 Messages postés 33 Statut Membre
 
J'ai mis le code pour les erreurs trouvés sur ton lien mais quand je tente d'envoyer un message j'ai toujours la même erreur... J'ai modifié deux autres lignes également.

Comment ça je vais avoir voir apparaitre une erreur pour la variable headers? C'est une partie que j'ai copiée sur internet...

error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Nous contacter</title>
 
</head>
  
<body>
  <br>
    
<form method="post" action="guillaume.php">
    <label for="name">Nom:</label>
    <input type="text" name="name" id="name" required placeholder="Nom" />
     
    <label for="subject">Objet Du Message:</label>
    <input type="text" name="subject" id="subject" required placeholder="Sujet" />
     
    <label for="email">Email:</label>
    <input type="email" name="email" id="email" required placeholder="email@exemple.com" />
     
    <label for="message">Message:</label>
    <textarea name="message" id="message" required></textarea>
     
  	<div style="margin-left: 29%;"class="boutton">
    <input type="submit" value="Envoyer votre message" />
  </div>
</form>  
  
  
  <?php
	$destinataire = 'b.guillaume***@hotmail.com';
	$expediteur = !empty($_POST['email']) ? $_POST['email'] : NULL;	
	$objet = !empty($_POST['sbject']) ? $_POST['subjet'] : NULL;
	$headers .= 'To: '.$destinataire."\n"; // Mail de reponse
	$headers .= 'From: '.$expediteur.''."\n"; // Expediteur
	$message1 = 	"L'auteur du mail est:".$_POST['name'].;
	$message2 = 	'Voici son mail:'.$_POST['message'].;
	
 	if(mail($destinataire, $objet, $message1, $message2, $headers))
	{
		echo '<script languag="javascript" >alert("Votre message a bien été envoyé ");</script>';
	}
	else // Non envoyé
	{
		echo '<script languag="javascript">alert("Votre message n\'a pas pu être envoyé");</script>';
	}
	header('Location: guillaume.php');
?>
  
</body>    
</html>
0