Envoie de mail

Bonjour,
j'aimerai que vous aidier à resoudre un blêm d'envoie de mail. voici la l'erreur:<Warning: mail(): Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\wamp\www\3KG\controller\Ctrocontact.php on line 90> et voici mon code PHP5...

<?php   
    function chargerclasse($classe)
    {
        require ('model/class/'. $classe . '.php');
    }

 spl_autoload_register('chargerclasse'); // fonction d'auto chargement de classe.   

//instanciation des managers
 $man=new ContactManager($bdd);

 if(isset($_POST['btn_envoyer']) && $_POST['btn_envoyer']=="Envoyer" )
{

      $destinataire='3k.groupe@gmail.com';
      $sujet='Bonjour';
      $nom      = htmlspecialchars($_POST['nom']);
      $email    = htmlspecialchars($_POST['email']);
      $tel      = htmlspecialchars($_POST['tel']);
      $message  = htmlspecialchars($_POST['message']);
      trim($nom);
      trim($email);
      trim($tel);
      trim($message);
      trim($sujet);

    $regex_mail = '/^[-+.\w]{1,64}@[-.\w]{1,64}\.[-.\w]{2,6}$/i';
    $regex_head = '/[\n\r]/';

      if(empty($nom)  
           || empty($email)  
           || empty($message))
         {
             $alert = 'Les trois champs (Nom , E_mail , Commantaire ) doivent être renseignés';
             echo "$alert";
         }
             /* On vérifie que le format de l'e-mail est correct */
         elseif (!preg_match($regex_mail, $email))
          {
            $alert = 'L\'adresse '.$email.' n\'est pas valide';
            echo "$alert";
          }
            /* On vérifie qu'il n'y a aucun header dans les champs */
         elseif (preg_match($regex_head, $email) || preg_match($regex_head, $nom) || preg_match($regex_head, $message) || preg_match($regex_head, $tel) )
          {
           $alert = 'En-têtes interdites dans les champs du formulaire';
           echo "$alert";
          }

if (!isset($_COOKIE['sent']))
    {
$messagemail = '<html>
<head>
<title>'.$sujet.'</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<style type="text/css">
body
{
width: 1024px;
margin: auto;
margin-top: 20px;
margin-bottom: 20px;
font-family: Verdana, Arial, Helvetica, sans-serif;
}
#logo
{
width: 300px;
height: 110px;
background-image: url("[http://www.divriabidjan.com] /images/logo.jpg");
background-repeat: no-repeat;
}
</style>
</head>
<body>
<div id="en _ tete">
</div>
<div id="corps">
<p>
  <h3 class="titre">'.$sujet.'</h3>
  '.$message.'<br/> Merci à vous.
</p>
</div>
</body>
</html>';
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
$headers .= 'De: « l\'auteur » <'.$nom.'> , Tel:<'.$tel.'>' . "\r\n";
if(mail($destinataire, $sujet , $messagemail, $headers))
      {
     echo  '<script language="javascript"> alert("E-mail envoyé avec succès !") </script>';  
                //redirection
     echo  '<script language="javascript">document.location.href="index.php?page=Ctrocontact" </script>';
              /* On créé un cookie de courte durée (ici 120 secondes) pour éviter de 


* renvoyer un mail en rafraichissant la page */
            setcookie("sent", "1", time() + 120);
            /* On détruit la variable $_POST */
            unset($_POST);
    }
  else
      {
         echo  '<script language="javascript"> alert("Echec d\'envoi, réessayez SVP !") </script>';
      }
 }
  else
    {
     header('Location: [http://www.3kgroupesarl.ci/index.php?page=Ctrocontact http://www.3kgroupesarl.ci/index.php?page=Ctrocontact');|nofollow]
    }
}
include(dirname(__FILE__).'/../view/VContact.php');
?>





EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici :ICI

Merci d'y penser dans tes prochains messages.

1 réponse

  1. Modérateur
    Bonjour,

    Vu le message d'erreur :
     Failed to connect to mailserver at "localhost" port 25,

    Il semble que tu travailles en LOCAL sur ton ordi ..... (via un logiciel comme WAMP, EasyPHP, XAMPP ..... )
    Et donc... pour que ça puisse fonctionner... il faut que tu paramétres dans le php.ini le SMTP de la messagerie à utiliser.

    Une autre possibilité serait de passer par la class PHPMAILER ( le téléchargement et des exemples sont disponibles sur le net). Cela te permettrait de passer par ta boite mail gmail, live.. ou autre.

    1. Merci pour ton aide et que php évolu.