Erreur php dans un formulaire de contact

sunev -  
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,
Comment corriger cette erreur

Warning: mail(): "sendmail_from" not set in php.ini or custom "From:" header missing in C:\Program Files\EasyPHP-12.1\www\0000\traitement.php on line 19


mon formulaire

<!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>sans titre 1</title>
</head>
<body>
<form method="post" action="traitement.php">
<label>Nom:</label><input type="text" name="nom"/>
<p>Votre email: <span style="color:#ff0000;"></span>: <input type="text" name="email" size="30" /></p>
<p>Message <span style="color:#ff0000;"></span>:</p>
<textarea name="message" cols="60" rows="10"></textarea>
<input type="submit" name="envoyer" value="Envoyer"/>
</form>
</body>
</html>


fichier traitement.php

<?php
if ($_SERVER['REQUEST_METHOD']=='POST') {
$nom = htmlentities($_POST['nom']);
$destinataire = '***@***';
$email = htmlentities($_POST['email']);
$message = htmlentities($_POST['message']);

$sujet = 'Titre du message'; // Titre de l'email
$contenu = '<html><head><title>Titre du message</title></head><body>';
$contenu .= '<p>Bonjour, vous avez reçu un message à partir de votre site web.</p>';
$contenu .= '<p><strong>Nom</strong>: '.$nom.'</p>';
$contenu .= '<p><strong>Email</strong>: '.$email.'</p>';
$contenu .= '<p><strong>Message</strong>: '.$message.'</p>';
$contenu .= '</body></html>';
$headers = 'MIME-Version: 1.0'."\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1'."\r\n";

19 mail($destinataire, $sujet, $contenu, $headers);
echo '<h2>Message envoyé!</h2>';
}
?>



si quelqu'un peut m'aider merci

1 réponse

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour,

Le message est pourtant clair
Warning: mail(): "sendmail_from" not set in php.ini or custom "From:" header missing in C:\Program Files\EasyPHP-12.1\www\0000\traitement.php on line 19 

... tu n'as pas indiqué de "FROM" dans ton header.

Essaye ce code :
function Envoi_Mail($to,$sujet,$message='') {
  // Creation de l'entete du mail a envoyer
  // --------------------------------------
 $from = 'tonadresseMailparexemple'; // a modifier
  $boundary = md5(uniqid(microtime(), TRUE));
  $headers = "From: $from\r\n"; // FROM ...
  //$headers .= "Cc: $cc\n"; //pour mettre un destinataire en copie 
  $headers .= 'Mime-Version: 1.0'."\r\n";
  $headers .= 'Content-Type: multipart/mixed;boundary='.$boundary."\r\n";
  $headers .= "\r\n";

  // Creation du message a envoyer
  // -----------------------------
  $msg  =
  '--' . $boundary . "\r\n" .
  'Content-type: text/html; charset=utf-8' . "\r\n\r\n
  <html>
   <body>      
    $message
   </body>
  </html>\r\n";

  // Envoi du mail
  // -------------
  return mail($to, $sujet, $msg, $headers);
 } 


et donc, pour l'utiliser :
 if ($_SERVER['REQUEST_METHOD']=='POST') {     
  $nom     = isset($_POST['nom']) ?  htmlentities($_POST['nom']) : ''; 
  $email   = isset($_POST['email']) ? htmlentities($_POST['email']) : '';
  $message = isset($_POST['message']) ? htmlentities($_POST['message']) : '';

   $destinataire = '***@***';  

   $sujet = 'Titre du message'; // Titre de l'email

   $contenu  = '<p>Bonjour, vous avez reçu un message à partir de votre site web.</p>';
   $contenu .= '<p><strong>Nom</strong>: '.$nom.'</p>';
   $contenu .= '<p><strong>Email</strong>: '.$email.'</p>';
   $contenu .= '<p><strong>Message</strong>: '.$message.'</p>';

 if( Envoi_Mail($destinataire,$sujet, $message)){
    echo "Message envoyé !";
  }
 
}



NB: Pour pouvoir envoyer des mails depuis un Easyphp, wamp, xampp.... il faut avant tout avoir paramétré le fichier php.ini. (tu trouveras de la doc à ce sujet sur le net ! )

0