Envoi de message depuis mon site

Résolu
Bonjour,

salut je ve que mes visiters m'envoi des suggestions depuis mon site que dois faire je suis en php wanpserver et il maffiche ceci

Warning: Variable passed to each() is not an array or object in C:\wamp\www\joelsite\contacts.php on line 166

Warning: mail() [function.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\joelsite\contacts.php on line 170
--
JOELCOMPUTER YAKRO
Configuration: Windows XP
Firefox 3.5.2

18 réponses

Résumé de la discussion

Des visiteurs tentent d’envoyer des suggestions via un formulaire PHP, mais des avertissements Variable passed to each() is not an array or object et l’échec de mail() à se connecter au serveur localhost:25 bloquent l’envoi. Pour résoudre, il faut soit installer et configurer un serveur mail ou activer SMTP dans le php.ini, soit utiliser une bibliothèque comme PHPMailer pour se connecter à un SMTP externe. Des réponses recommandent aussi de tester le chemin correct des paramètres et de privilégier PHPMailer avec un serveur SMTP fiable ou mailer externe plutôt que la fonction mail() locale. Certaines expertises mentionnent la nécessité d’avoir un compte sur un serveur SMTP et d’éviter l’envoi direct depuis localhost pour les tests.

Bobot (l’IA à votre service)
  1. Bonjour,

    Vote PC doit être serveur ou vous devez modifier la valeur du SMTP dans le php.ini.

    On ne dit pas je veux. Voir la charte.
    1
    1. cool merci pour le rapel
      0
    2. mais comment je fait? svp!!
      0
  2. non je suis maintenat en php et je veux le code
    0
    1. salut...

      personellement je suis en reseaux , j'a ifait un site sur WAMPS , je suis connecté a internet et j'ai reussi a envoyer des mail en utilisant phpmailer ..... (c'est vachement pratique et complet , possibilité d'ajouter des pieces jointes...) renseigne toi sur cette class ou sinon file moi une adresse mail a l'aquelle je peux t'envoyer un formulaire qui permet d'envoyer des mails comme ça tu pouras le decortiquer....

      voila....
      0
      1. essaye de choper le dossier PHPMailer il est necessaire

        et ensuite tu met un script du genre...

        <?php
        //on recupére les données d'un formulaire..
        $from=$_POST['from'];
        $dest=$_POST['dest'];
        $reply=$_POST['reply'];
        $objet=$_POST['obj'];
        $message=$_POST['cont'];

        ini_set("smtp","smtp.free.fr");

        require "phpmailer/class.phpmailer.php";
        $mail = new PHPmailer();
        $mail->IsSMTP();
        $mail->Host='smtp.free.fr'; //serveur smtp de free
        $mail->IsMail();
        $mail->From=$from;//met l'adresse de la personne qui t'envoie le mail
        $mail->AddAddress($dest); //met l'adresse a laquelle tu veux que l'on t'envoie le mail
        $mail->AddReplyTo($reply);//met l'adresse de la personne qui t'envoie le mail (afin de pouvoir repondre...)
        $mail->Subject=$objet;// le sujet du message
        $mail->Body=$message; // le message
        //$mail->Send();
        //$mail->IsSendmail();
        $mail->SmtpClose();
        if(!$mail->Send()){ //Teste le return code de la fonction
        echo $mail->ErrorInfo; //Affiche le message d'erreur (ATTENTION:voir section 7)
        }
        else
        {echo"mail envoyé";}
        $mail->SmtpClose();

        // mail('mathieu@bkf.fr', 'sujet', 'message','From: adresse@bkf.fr>' );

        ?>
        avec ça normalement tu peux permettre a tes internautes de t'envoyer un mail....

        sinon pour pas te prendre la téte , ya le lien <a> avec mailto....(je sais plus trop comment ça fonctionnet mais ya moyen aussi comme ça......
        voila...
        0
        1. ok merci pour l'attention vraiment merci je test voir mais jai la foi ke sa marche
          0
        2. --il maffiche cette erreur" Parse error: parse error in C:\wamp\www\joelsite\envoi.php on line 18"
          JOELCOMPUTER YAKRO
          0
        3. @joelcomputertu peux me montre ta ligne 18 stp...

          0
        4. @vincent170186bon je ne vois pas trop sa mai voici mon code

          <?php
          //on recupére les données d'un formulaire..
          $nom=$_POST['from'];
          $mail=$_POST['mail'];
          $tel=$_POST['tel'];
          $sujet=$_POST['sujet'];
          $message=$_POST['message'];

          ini_set("smtp","smtp.free.fr");

          require "phpmailer/class.phpmailer.php";
          $mail = new PHPmailer();
          $mail->IsSMTP();
          $mail->Host='smtp.free.fr'; //serveur smtp de free
          $mail->IsMail();
          $mail->From=$mail;//met l'adresse de la personne qui t'envoie le mail
          $mail->AddAddress($henri_webmaster@hotmail.fr); //met l'adresse a laquelle tu veux que l'on t'envoie le mail
          $mail->AddReplyTo($reply);//met l'adresse de la personne qui t'envoie le mail (afin de pouvoir repondre...)
          $mail->sujet=$sujet;// le sujet du message
          $mail->Body=$message; // le message
          //$mail->Send();
          //$mail->IsSendmail();
          $mail->SmtpClose();
          if(!$mail->Send()){ //Teste le return code de la fonction
          echo $mail->ErrorInfo; //Affiche le message d'erreur (ATTENTION:voir section 7)
          }
          else
          {echo"mail envoyé";}
          $mail->SmtpClose();

          // mail('mathieu@bkf.fr', 'sujet', 'message','From: adresse@bkf.fr>' );

          ?>
          0
        5. @joelcomputer$mail->AddAddress($henri_webmaster@hotmail.fr); //met l'adresse a laquelle tu veux que l'on t'envoie le mail
          0
      2. alors met plutot

        $mail->AddAddress('henri_webmaster@hotmail.fr'); //met l'adresse a laquelle tu veux que l'on t'envoie le mail
        ça devrait marcher .... dis moi quoi...
        0
        1. il dit ce-ci
          Notice: Undefined index: from in C:\wamp\www\joelsite\envoi.php on line 3

          Warning: require(phpmailer/class.phpmailer.php) [function.require]: failed to open stream: No such file or directory in C:\wamp\www\joelsite\envoi.php on line 12

          Fatal error: require() [function.require]: Failed opening required 'phpmailer/class.phpmailer.php' (include_path='.;C:\php5\pear') in C:\wamp\www\joelsite\envoi.php on line 12
          0
      3. oui c'est parce que tu n'a pas eté chercher le dossier require(phpmailer/class.phpmailer.php) auquel tu fais appel....
        vas voir dans ta boite mail.... je vien de te l'envoyer ...enfin je croit....
        0
        1. je le place dans kel dossier de mon server
          0
      4. au meme endroit que ta page...... dans le meme dossier....
        0
        1. ok jai ce message

          Notice: Undefined index: nom in C:\wamp\www\joelsite\envoi.php on line 3

          Catchable fatal error: Object of class PHPMailer could not be converted to string in C:\wamp\www\joelsite\PHPMailer\class.phpmailer.php on line 411
          0
        2. ilaffiche sa
          IsSMTP(); $mail->Host='smtp.neuf.fr'; $mail->IsMail(); $mail->From=$from; $mail->AddAddress($dest); $mail->AddReplyTo($reply); $mail->Subject=$objet; $mail->Body=$message; //$mail->Send(); //$mail->IsSendmail(); $mail->SmtpClose(); if(!$mail->Send()){ //Teste le return code de la fonction echo $mail->ErrorInfo; //Affiche le message d'erreur (ATTENTION:voir section 7) } else {echo"mail envoyé";} $mail->SmtpClose(); // mail('mathieu@bkf.fr', 'sujet', 'message','From: adresse@bkf.fr>' ); ?>

          ok et si je le mettai en lign pour voir?!!!!!!!!!!!
          0
      5. si tu peux me montrer ton code (genre les 5 premiers ligne ça peux m'aider ....) en attendant vas voir ta boite mail......
        0
        1. kel code? lekel
          0
      6. ben de ta page : envoi.php
        0
        1. <?php
          //on recupére les données d'un formulaire..
          $nom=$_POST['nom'];
          $mail=$_POST['mail'];
          $tel=$_POST['tel'];
          $sujet=$_POST['sujet'];
          $message=$_POST['message'];

          ini_set("smtp","smtp.free.fr");

          include "répertoire_phpmailer/class.phpmailer.php";
          $mail = new PHPmailer();
          $mail->IsSMTP();
          $mail->Host='smtp.free.fr'; //serveur smtp de free
          $mail->IsMail();
          $mail->From=$mail;//met l'adresse de la personne qui t'envoie le mail
          $mail->AddAddress('henri_webmaster@hotmail.fr'); //met l'adresse a laquelle tu veux que l'on t'envoie le mail
          $mail->AddReplyTo($mail);//met l'adresse de la personne qui t'envoie le mail (afin de pouvoir repondre...)
          $mail->sujet=$sujet;// le sujet du message
          $mail->Body=$message; // le message
          //$mail->Send();
          //$mail->IsSendmail();
          $mail->SmtpClose();
          if(!$mail->Send()){ //Teste le return code de la fonction
          echo $mail->ErrorInfo; //Affiche le message d'erreur (ATTENTION:voir section 7)
          }
          else
          {echo"mail envoyé";}
          $mail->SmtpClose();

          // mail('mathieu@bkf.fr', 'sujet', 'message','From: adresse@bkf.fr>' );

          ?>
          0
      7. ecoute la je vais devoir y aller , j'avoue que j evois pas en tout cas si ta un soucis tu a mon mail.... donc voila....
        0
        1. ok merci pour laide je crois que j'y arriverais
          0
      8. Modérateur
        Salut joelcomputer,
        N'oublie pas de passer le statut de la discussion sur "Résolu".
        https://www.commentcamarche.net/infos/25917-marquer-un-fil-de-discussion-comme-etant-resolu/
        Je le fais pour toi cette fois-ci.
        Penses-y à l'avenir, merci.
        Bonne continuation.
        Crapoulou.
        0
        1. --mais mon problem ne lai pas encore
          JOELCOMPUTER YAKRO
          0
        2. Modérateur
          @joelcomputerAutant pour moi, alors tiens nous au courant ;-).
          0
        3. @crapouloumais et vs pouvez vs pas maider?
          0
      9. Modérateur
        Non, désolé, ça aurait été avec plaisir mais je ne suis pas calé là dedans :S
        0
        1. ok koool alors merci
          0


      10. avec modification du php.ini

        ci après un code qui focntionne après adaptation

        Formulaire et envoi d'un message pour Contact

        <html>
        <head>
        <meta http-equiv="Content-Language" content="fr">
        <meta http-equiv="Content-Type" content="text/html; charset=windows-1152">
        <LINK REL="stylesheet" HREF="monstyle.css" TYPE="text/css">

        <title>Contact</title>
        </head>
        <SCRIPT LANGUAGE="JavaScript">
        /*
        SCRIPT EDITE SUR L'EDITEUR JAVASCRIPT
        http://www.editeurjavascript.com
        */
        function VerifForm(formulaire)
        {
        adresse = formulaire.expediteur.value;
        zonemessage = formulaire.message.value;
        var place = adresse.indexOf("@",1);
        var point = adresse.indexOf(".",place+1);

        if (zonemessage == "" ){
        alert('zone texte du message invalide!!');
        return(false);
        }

        if ((place > -1)&&(adresse.length >2)&&(point > 1))
        {
        formulaire.submit();
        return(true);
        }
        else
        {
        alert('Entrez une adresse e-mail valide!!');
        return(false);
        }
        }
        </SCRIPT>

        <body>
        <!--fichier mail.php-->
        <?php
        $envoi=$_POST['envoi'];
        $destinataire="destinataire"."@"."fai.fr";
        $expediteur=$_POST['expediteur'];
        $sujet="Acontact";
        $message=$_POST['message'];

        if (! isset($envoi)) {
        ?>
        <center><b>Contact </b></center>
        <form name="formulaire" method="post" action="mail.php" onSubmit="return(VerifForm(this));">
        <table border=0 width=80% cellspacing=3 cellpadding=3 align='center'><tr>
        <td> Destinataire </td>
        <td><input readonly type=text name='destinataire' size=30 value='A2x Sonorisation'></td>
        </tr><tr>
        <td> Expéditeur </td>
        <td><input type=text name='expediteur' size=30 value=''> (entrez votre adresse électronique).</td>
        </tr><tr>
        <td> Sujet </td>
        <td><input readonly type=text name='sujet' size=30 value='A2x Sonorisation - contact'></td>
        </tr><tr>
        <td> Votre message </td>
        <td><textarea rows=10 cols=50 name='message' value='Voici mon message\n'></textarea></td>
        </tr><tr>
        <td>Validation : </td>
        <td><input type='submit' name='envoi' value='Envoyer' ></td>
        </tr>
        <tr> <td colspan='2'>Aucune des informations entrées ici n'est conservée dans une base.
        </td></tr>
        </table>
        </form>
        <?php
        }
        else {

        /* pour neutraliser les \ ajoutés à la transmission devant les ' et les " */
        $message=stripslashes($message);
        $sujet=stripslashes($sujet);
        $entete="From: $expediteur\r\nReply-To: $expediteur\r\nX-Mailer: PHP/";

        /* expédition et compte-rendu */
        $ok=mail($destinataire, $sujet,$message,$entete);
        if ($ok){
        echo "Envoi du message réussi !";
        echo "<br><input type='button' value=' Terminer ' onclick='javascript:window.close()'>";
        }
        else {
        echo "L'envoi a échoué ..";
        echo "<br><input type='button' value=' Terminer ' onclick='javascript:window.close()'>";
        }
        }
        ?>
        0
        1. je ne vois pas mais les code nont pas l'ere de parcher sur mon serveur
          0
      11. ce code est la copie d'un code qui fonctionne depuis plus de 5 ans sur un site chez FREE
        0
        1. jaimerais savoir ci les servers gratuites 0fees.net acceptent les fonctions mail
          0
      12. Contributeur
        https://openclassrooms.com/fr/

        Parce que y' a rien de compliqué la dedans, on t' a donné la réponse, mais tu veux qu' on fasse le boulot pour toi.

        Google n' est peu etre pas ton ami en fait...
        0
        1. Contributeur
          bonjour :)

          perso j utilise U7n.org (http://www.umbreon.net/ cf mon site jjsteing.u7n.org ) il est tres bien, 250Mo, mail, htaccess, 5 bd, enfin plein d avantages ;)

          Sinon, chez free tu peux aussi avoir ta page perso, 10Go je crois... le mail fonctionne, mais pas le htaccess...
          0