Envois des e-mail avec php

Bonjour,
j'ai créé une page web qui sert à envoyer les e-mails à nos clients mais je ne parviens pas à envoyer un message.
Voici le code HTML :
<html>
 <head>
  <title>Page d'envois des messages éléctroniques</title>
 </head>
 <body style="background-color:teal; font-size:12px; font-familly:verdana; padding-top:50px;padding-left:200px">
  <form action="#" Method="POST" style="background-color:orange;width:650px">
   <table>
    <tr>
  <td>Adresse de l'expediteur</td><td><select name="exp" style="width:125px; height:25px" >
   <?php
    include("connexion.php");
    $req=$bdd->query("select* from personnel");
    while($data=$req->fetch())
    {
     echo'<option value="'.$data['Email'].'">'.$data['Email'].'</option>';
    }
   ?>
  </select></td>
 </tr>
 <tr>
  <td>Adresse du destinataire</td><td><input type="text" name="dest" value="" style="width:130px; height:25px" maxlength="100px"></td>
 </tr>
 <tr>
  <td>Sujet</td><td><input type="text" name="su" value="" style="width:130px; height:25px"></td>
 </tr>
 <tr>
  <td>Contenu du message</td><td><textarea cols="35" rows="5" name="ob" maxlength="200px"></textarea></td>
 </tr>
 <tr>
  <td><input type="submit" name="ok" value="Envoyer" style="background-color:blue;color:yellow;width:150px; height:50px; font-size:25px;font-familly:verdana"></td>
 </tr>
   </table>
   <?php
    if(isset($_POST['ok']))
 {
  include("executer/envoisMail.php");
 }
   ?>
  </form>
 </body>
</html>

Et voici le code PHP:
<?php
 //On va chercher la définition de la classe
 require("class.phpmailer.php");
 include("connexion.php");
 $exp=$_POST['exp'];
 $dest=$_POST['dest'];
 $su=$_POST['su'];
 $ob=$_POST['ob'];
 
 //La requête de recuperation du Nom et Prenom de l'expeditaire
 $req=$bdd->query("select Nom,Prenom from personnel where Email='$exp'");
 $data=$req->fetch();
 $nom=$data['Nom'];
 $prenom=$data['Prenom'];
 
 //On va créé une nouvelle instance de la classe
 $mail=new PHPMailer();
 //De qui vient le message, e-mail puis nom
 $mail->From=$exp;
 $mail->FromName=$nom;
 
 //Définition du sujet/objet
 $mail->Subject=$su;
 
 //On lit le contenu d'une page html
 $body=file_get_contents('messages.php');
 
 //On definit le contenu de cette page comme message
 $mail->MsgPHP($body);
 
 //On pourra définir un message alternatif pour les boîtes de messagerie n'acceptant pas le html
 $mail->AltBody="Ce message est au format HTML, votre messagerie n'accepte pas ce format.";
 
 //Il reste encore à ajouter au moins un destinataire (ou plus, par plusieurs appel à cette methode)
 $mail->AddAddress($dest."Bonjour");
 
 //Pour finir, on envoi l'e-mail
 $mail->send();
 
?>

Je vous prie de m'aider pour que je parvienne à envoyer un message à mes client ou ami.
Merci d'avance à tous

Voici le message d'erreur:
Could not instantiate mail function.

13 réponses

  1. Contributeur
    Merci d'utiliser la balise de code, ça simplifiera la lecture.
    0
    1. ceci vient d'être corrigé, il reste une seule ligne que j'ai précisé apres la modification du message.
      0
      1. Contributeur
        la balise de code s'il te plait !

        Edit ton message, et au lieu de mettre en gras, utilise la balise code, tu peux même choisir le type de code, merci pour nous ^^
        0
        1. Bonjour

          $body = file_get_contents('messages.php');

          C'est =, pas ->
          Faut pas se laisser emporter par la syntaxe objet quand il ne s'agit pas d'objet !
          0
          1. Si vous avez bien vu, je viens de corriger cette erreur mais la question reste à resoudre l'instatiation de la fonction mail:Could not instantiate mail function.
            0
        2. je viens de le faire et merci d'avance...
          je suis vraiment à la recherche de la resolution de ce probleme,
          0
          1. Contributeur
            Merci à toi, jette un oeil à la réponse du père, il est extrêmement compétent ;)
            0
            1. Oui, c'est vrai mais si vous regardez bien dans les codes , je viens de corriger cette erreur mais la question reste à resoudre l'instatiation de la fonction mail et voici le message d'erreur qui reste:Could not instantiate mail function.
              0
              1. Déjà, cette ligne me semble suspecte :
                $mail->AddAddress($dest."Bonjour");

                On se demande un peu ce que le "Bonjour" vient faire ici !

                Sinon, les paramètres de ton serveur de mail (type, hôte) sont-ils bien définis ? Travailles-tu en local ou en ligne ?
                0
                1. Je travail en local
                  et je ne sais pas ce que vous voulez dire par les parametres du serveur(type, hote) pouriez vous m'aider avec un exemple?
                  Merci d'avance
                  0
              2. Merci d'utiliser "Répondre au sujet" pour répondre et n'utiliser "Ajouter un commentaire" que quand il s'agit de commentaire

                Il faut savoir que PHP n'envoie pas de mails par lui-même, mais fait appel à un service extérieur, souvent un serveur SMTP.
                Ce serveur SMTP peut lui aussi être local (mais je doute que tu en aies installé un) ou bien celui de ton fournisseur d'accès Internet. Il faut indiquer tout ça à phpMailer pour qu'il puisse envoyer tes mails.

                $mail->IsSMTP();    // pour dire d'utiliser SMTP
                $mail->Host='smtp.free.fr';       // nom du serveur SMTP. dépend de ton fournisseur d'accès
                $mail->Port=25;     // port standard SMTP


                Peux-tu dire si tu as toujours le même message d'erreur ou un autre, et sur quelle ligne ?
                0
                1. Bonjour TheBiShOp

                  Je viens de voir ton commentaire. C'est très flatteur, merci, mais sûrement largement excessif.
                  0
                  1. Même message could not instatiate function mail()
                    0
                    1. Il va falloir que j'essaye ton script pour voir si je peux reproduire cette erreur, car je ne l'ai jamais vue.

                      En attendant, je remarque ceci :
                       $exp=$_POST['exp'];

                      Or, il n'y a aucun 'exp' dans ton formulaire. Le champ From ( $mail -> From=$exp;) est donc incorrect
                      essaye
                       $exp='monadresse@monfai.fr';

                      Pour avoir une adresse d'expéditeur correcte
                      0
                      1. Après vérification, ton message est un message généré par phpmailer. Il signifie que l'appel à la fonction mail du php a retourné false.
                        Parmi les causes possibles, il y a effectivement les paramètres du serveur (hôte, port) et l'adresse de l'expéditeur.
                        0