IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[PHPMailer]-Envoi Mail en Localhost?


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2012
    Messages : 7
    Points : 5
    Points
    5
    Par défaut [PHPMailer]-Envoi Mail en Localhost?
    Bonjours à tous ,


    Mise en place et outils :

    WampServer en localhost/
    phpmailer/
    utilisation de Gmail pour tests/(Aucun paramètre n'a été modifié sur ma boite mail)

    Alors voila je suis confronté dorénavant à un problème que des milliers d'utilisateurs ont eu ,en ce qui concerne l'envoi tout simple d'Email en local grâce a la fonction $mail en passant par phpmailer.
    Il existe des milliers de topics la dessus mais chacun rajoute son avis et a la fin on ne sait plus trop où donné de la tête.

    Donc après environ 50 essais différents & des heures et des heures de recherche ,
    j’aboutis finalement à ce message d'erreur qui me donne envie de jeter l'ordi par la fenêtre






    Configuration Mail.php :


    _______________________________________________________________________________________________________

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    <?php
     
     
    ini_set("max_execution_time", 60);                                                                                       // Suite au message d'erreur j'ai donc modifier le time pour voir si ça passer  ,mais NON
    include("C:\wamp\www\site\phpmailer\class.phpmailer.php");                                                 // Appel de mon class.phpmailer
    include("C:\wamp\www\site\phpmailer\class.smtp.php");                                                        // Appel de mon class.smtp
     
    $mail             = new PHPMailer();
     
     
     
    $mail->IsSMTP();
    $mail->SMTPAuth   = true;                 
    $mail->SMTPSecure = "ssl";                 
    $mail->Host       = "smtp.gmail.com";     
    $mail->Port       = 465;                   
     
    $mail->Username   = "*************"; pour l'instant  sans <a href="mailto:le@gmail.com">le@gmail.com</a>              // Gmail identifiant
    $mail->Password   = "*************";                                                           // Gmail mot de passe
    
    $mail->From       = "blablabla@googlemail.com";
    $mail->FromName   = "blablabla";
    $mail->Subject    = "This is the subject";
    $mail->AltBody    = "This is the body when user views in plain text format"; 
    $mail->WordWrap   = 50; // set word wrap
    
    $mail->Body='Voici un exemple d\'e-mail au format Texte';
     
    $mail->AddReplyTo("blablabla9@hotmail.fr","");
     
     
     
    $mail->AddAddress("blablabla","blablabla");
     
     
     
    if(!$mail->Send()) {
      echo "Mailer Error: " . $mail->ErrorInfo;
    } else {
      echo "Message has been sent";
    }
     
    ?>
    _________________________________________________________________


    Configuration php.ini :



    _________________________________________________________________


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    [mail function]
    ; For Win32 only.
    ; <a href="http://php.net/smtp" target="_blank">http://php.net/smtp</a>
    SMTP = "smtp.gmail.com"
    ; <a href="http://php.net/smtp-port" target="_blank">http://php.net/smtp-port</a>
    smtp_port = 465
     
    ; For Win32 only.
    ; <a href="http://php.net/sendmail-from" target="_blank">http://php.net/sendmail-from</a>
    sendmail_from =
     
    ; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
    ; <a href="http://php.net/sendmail-path" target="_blank">http://php.net/sendmail-path</a>
    ;sendmail_path =
     
    ; Force the addition of the specified parameters to be passed as extra parameters
    ; to the sendmail binary. These parameters will always replace the value of
    ; the 5th parameter to mail(), even in safe mode.
    ;mail.force_extra_parameters =
     
    ; Add X-PHP-Originating-Script: that will include uid of the script followed by the filename
    mail.add_x_header = "0"
     
    ; Log all mail() calls including the full path of the script, line #, to address and headers
    ;mail.log =


    J'ai pratiquement tout essayer mais la je suis à cour d'idée...
    j'avais trouvé un post de ce type sur le forum mais c'était un autre problème que j'ai déjà eu auparavant c'est pourquoi je me suis permis de recréer une nouvelle discussion.


    Merci de votre aide et a bientôt ,

    Cordialement Jc Dus 2024

  2. #2
    Expert confirmé
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Points : 4 853
    Points
    4 853
    Par défaut
    Salut,

    tu n'as besoin de toucher à la configuration de PHP pour tester l'envoi d'email via gmail, il existe un fichier d'exemple dans le package phpmailer.

    Voici un extrait

    http://code.google.com/a/apache-extr...l_advanced.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    <?php
    require_once('../class.phpmailer.php');
    //include("class.smtp.php"); // optional, gets called from within class.phpmailer.php if not already loaded
     
    $mail = new PHPMailer(true); // the true param means it will throw exceptions on errors, which we need to catch
     
    $mail->IsSMTP(); // telling the class to use SMTP
     
    try {
      $mail->Host       = "mail.yourdomain.com"; // SMTP server
      $mail->SMTPDebug  = 2;                     // enables SMTP debug information (for testing)
      $mail->SMTPAuth   = true;                  // enable SMTP authentication
      $mail->SMTPSecure = "ssl";                 // sets the prefix to the servier
      $mail->Host       = "smtp.gmail.com";      // sets GMAIL as the SMTP server
      $mail->Port       = 465;                   // set the SMTP port for the GMAIL server
      $mail->Username   = "yourusername@gmail.com";  // GMAIL username
      $mail->Password   = "yourpassword";            // GMAIL password
      $mail->AddReplyTo('name@yourdomain.com', 'First Last');
      $mail->AddAddress('whoto@otherdomain.com', 'John Doe');
      $mail->SetFrom('name@yourdomain.com', 'First Last');
      $mail->AddReplyTo('name@yourdomain.com', 'First Last');
      $mail->Subject = 'PHPMailer Test Subject via mail(), advanced';
      $mail->AltBody = 'To view the message, please use an HTML compatible email viewer!'; // optional - MsgHTML will create an alternate automatically
      $mail->MsgHTML(file_get_contents('contents.html'));
      $mail->AddAttachment('images/phpmailer.gif');      // attachment
      $mail->AddAttachment('images/phpmailer_mini.gif'); // attachment
      $mail->Send();
      echo "Message Sent OK</p>\n";
    } catch (phpmailerException $e) {
      echo $e->errorMessage(); //Pretty error messages from PHPMailer
    } catch (Exception $e) {
      echo $e->getMessage(); //Boring error messages from anything else!
    }
    ?>

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2012
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    bonjour et merci de ta réponse,

    Toutefois je rencontre une zone d'ombre en ce qui concerne la ligne 10 et 20

    Comment définir ces deux lignes étant donné que le site n'est pas en ligne?
    je n'ai pas de nom de domaine et encore moins d'adresse mail associée!
    j'ai peu être pas très bien compris le fonctionnement de phpmailer ,je sais pas......

    Lorsque j'inscris ligne 10 la meme chose que ligne 14 "smtp.gmail.com" et ligne 20 de nouveau mon adresse mail j'obtiens une erreur de type Fatal error: Call to undefined method PHPMailer::SetFrom()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    <?php
    require_once('../class.phpmailer.php');
    //include("class.smtp.php"); // optional, gets called from within class.phpmailer.php if not already loaded
     
    $mail = new PHPMailer(true); // the true param means it will throw exceptions on errors, which we need to catch
     
    $mail->IsSMTP(); // telling the class to use SMTP
     
    try {
      $mail->Host       = "mail.yourdomain.com"; //Je suis en localhost.Dois-je donc laisser l'intitulé tel quel ou definir localhost à la place?
      $mail->SMTPDebug  = 2;                     // enables SMTP debug information (for testing)
      $mail->SMTPAuth   = true;                  // enable SMTP authentication
      $mail->SMTPSecure = "ssl";                 // sets the prefix to the servier
      $mail->Host       = "smtp.gmail.com";      // sets GMAIL as the SMTP server
      $mail->Port       = 465;                   // set the SMTP port for the GMAIL server
      $mail->Username   = "yourusername@gmail.com";  // GMAIL username
      $mail->Password   = "yourpassword";            // GMAIL password
      $mail->AddReplyTo('name@yourdomain.com', 'First Last');
      $mail->AddAddress('whoto@otherdomain.com', 'John Doe');
      $mail->SetFrom('name@yourdomain.com', 'First Last');//ici quelle adresse dois je rentrer?une adresse differente de ma gmail?Je ne vois pas comment configurer l'adresse d'envoi....
      $mail->AddReplyTo('name@yourdomain.com', 'First Last');
      $mail->Subject = 'PHPMailer Test Subject via mail(), advanced';
      $mail->AltBody = 'To view the message, please use an HTML compatible email viewer!'; // optional - MsgHTML will create an alternate automatically
      $mail->MsgHTML(file_get_contents('contents.html'));
      $mail->AddAttachment('images/phpmailer.gif');      // attachment
      $mail->AddAttachment('images/phpmailer_mini.gif'); // attachment
      $mail->Send();
      echo "Message Sent OK</p>\n";
    } catch (phpmailerException $e) {
      echo $e->errorMessage(); //Pretty error messages from PHPMailer
    } catch (Exception $e) {
      echo $e->getMessage(); //Boring error messages from anything else!
    }
    ?>

    de votre aide qui s’avère indispensable.




    ps:Sinon existe t'il un autre moyen plus simple pour envoyer un mail en localhost????

  4. #4
    Expert confirmé
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Points : 4 853
    Points
    4 853
    Par défaut
    Je suis en localhost.Dois-je donc laisser l'intitulé tel quel ou definir localhost à la place?
    oui

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $mail->Host = "localhost";
    //ici quelle adresse dois je rentrer?une adresse differente de ma gmail?Je ne vois pas comment configurer l'adresse d'envoi....
    Tu peux mettre n'importe quelle adresse

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $mail->SetFrom('unautreemail@domain.com', 'Ton Nom');

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2012
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Fatal error: Call to undefined method PHPMailer::SetFrom()
    Bonjour ,merci encore mais cela ne fonctionne toujours pas.

    En effet lorsque j’édite mon code à ligne 10 en tant que "localhost" et à la ligne 20 avec une autre adresse qui m'appartient aussi;
    J'ai le message suivant en réponse:

    Fatal error: Call to undefined method PHPMailer::SetFrom()....ligne 20!!!Qu'est ce que cela veut dire au juste?

    Alors j'ai effectuer une autre série de test:

    je sais que vous m'avez signaler que la modification du fichier php.ini n'est pas nécessaire cependant j'ai effectué la chose suivante:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    [mail function]
    ; For Win32 only.
    ; http://php.net/smtp
    SMTP = "*****" //mon smpt de FAI
    ; http://php.net/smtp-port
    smtp_port = 25 //j'ai laissé le port 25
    
    ; For Win32 only.
    ; http://php.net/sendmail-from
    sendmail_from = "" //mon adresse gmail
    
    ; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
    ; http://php.net/sendmail-path
    ;sendmail_path =

    Ensuite dans mon fichier php de connexion j'ai remplacé la ligne 10 par: le smtp de mon FAI et j'ai donc supprimé la ligne 20 et 24
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ($mail->SetFrom('', ''); et $mail->MsgHTML(file_get_contents('contents.html'));
    qui m'affichaient toujours:
    Fatal error: Call to undefined method PHPMailer::SetFrom()....ligne 20!!! et
    Fatal error: Call to undefined method PHPMailer::SetFrom()....ligne 24!!! lorsque j'avais supprimer au préalable la ligne 20.

    C'est alors que j'ai obtenu le message: Message sent Ok.cependant je ne reçois rien dans mes adresses mail .



    Je me suis dis que la ligne "set from" n'était pas vraiment importante étant donné que nous pouvions édité n'importe quelle adresse à la place...
    La ligne "MsgHTML" m'importe peu aussi car pour l'instant on message n'est pas en html.



    Voila suis-je en train de reussir ? Je ne sais pas car j'ai toujours rien dans mes boites email.

    J'espere y parvenir bientot.....


    Un grand merci à ceux qui m'aide et qui m’aideront à résoudre ce soucis.


    Cordialement jcdus 2024

  6. #6
    Expert confirmé
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Points : 4 853
    Points
    4 853
    Par défaut
    Fatal error: Call to undefined method PHPMailer::SetFrom()....
    Tu as quelle version de phpmailer ? Tu peux toujours télécharger la dernière version sur http://code.google.com/a/apache-extr...downloads/list

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2012
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Bonsoir,


    Citation Envoyé par Thes32 Voir le message
    Tu as quelle version de phpmailer ? Tu peux toujours télécharger la dernière version sur http://code.google.com/a/apache-extr...downloads/list
    Alors oui en effet je m'étais aperçu entre temps que ma version était vraiment ancienne,j'ai donc installer la version 5.2.1 .

    Bon et maintenant j'ai encore des erreurs(cf ci-dessous) en précisant que mon php_openssl.dll est bien présent dans mon dossier phpmailer.


    SMTP -> ERROR: Failed to connect to server: Unable to find the socket transport "ssl" - did you forget to enable it when you configured PHP? (53223000)
    SMTP Error: Could not connect to SMTP host.

    avec


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    $mail->Host       = "smtp.gmail.com"; // SMTP server
      $mail->SMTPDebug  = 2;                     // enables SMTP debug information (for testing)
      $mail->SMTPAuth   = true;                  // enable SMTP authentication
      $mail->SMTPSecure = "ssl";                 // sets the prefix to the servier
      $mail->Host       = "smtp.gmail.com";      // sets GMAIL as the SMTP server
      $mail->Port       = 465;                   // set the SMTP port for the GMAIL server
      $mail->Username   = "username@gmail.com";  // GMAIL username
      $mail->Password   = "password";            // GMAIL password
      $mail->AddReplyTo('@gmail.com', '@hotmail.fr');
      $mail->AddAddress('@gmail.com', '@hotmail.fr');
       $mail->SetFrom(@gmail.com', ' nom');
      $mail->AddReplyTo('@gmail.com', '@hotmail.fr');
      $mail->Subject = 'PHPMailer Test Subject via mail(), advanced';
      $mail->Body = 'To view the message, please use an HTML compatible email viewer!'; // optional - MsgHTML will create an alternate automatically
     
     
      $mail->Send();
      echo "Message Sent OK</p>\n";
    } catch (phpmailerException $e) {
      echo $e->errorMessage(); //Pretty error messages from PHPMailer
    } catch (Exception $e) {
      echo $e->getMessage(); //Boring error messages from anything else!

    mon php.ini est de nouveau vierge ,g effacer toute les données concernant la fonction mail

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    [mail function]
    ; For Win32 only.
    ; http://php.net/smtp
    SMTP = 
    ; http://php.net/smtp-port
    smtp_port =
    ; For Win32 only.
    ; http://php.net/sendmail-from
    sendmail_from =
    je précise aussi que j'ai modifié le host par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'ssl://smtp.gmail.com:465'
    Doit on aussi paramétrer class.smtp.php????

    j'ai rajouter dans mon code php ca ne marche pas non plus............


    j'ai aussi lu la plupart des forums et discussions présent via google en essayant une dizaine d'applications possible sans jamais aucun résultat positif avec des erreurs de type :

    The following From address failed: .......................
    ou bien
    SMTP -> ERROR: Failed to connect to server: Unable to find the socket transport "ssl" - did you forget to enable it when you configured PHP? (47980120)
    SMTP Error: Could not connect to SMTP host.


    Est il vraiment possible d'envoyer un mail sans hebergeur???je rappelle que mon site est en aucun cas en ligne.je fonctionne meme avec wamp hors ligne
    je me pose des questions car là .............j'ai vraiment tout essayer!!!!!



    Merci de votre soutien

    Cordialement,

    Jcdus2024

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2012
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Probleme resolu
    Salut à tous

    J'ai résolu mon problème, et oui enfin....
    je dois dire que j'ai eu une petite idée bien sympathique aprés des jours et des jours de recherches et de tests inaboutis.

    Voila je poste donc une solution qui ne résout pas le problème à proprement dit , mais plutôt le contourne.

    En effet j'ai remarqué que les boites e mails sont désormais pas mal protéger au niveau des spams et c'était là peut être mon problème,sans parler des authentifications......

    j'ai donc créer une boite mail jetable ,en l’occurrence Yopmail (pour ne pas la citer),insérer le smtp correspondant dans mon php.ini en laissant le port 25 .

    avec un script pour l'envoi de mail en php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    // To
    $to = 'votrenom@Yopmail.com';
     
    // Subject
    $subject = 'test en local envoi mail';
     
    // Message
    $msg = 'j'ai réussi à envoyer un mail!!!!';
     
    // Function mail()
    mail($to, $subject, $msg);
    Voila j’espère que cela servira car il existe des centaines de personnes qui ont ce problemes mais aucun n'a pensait à ce petit trick!


    Cordialement


    Jcdus 2024



+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. PHPMailer n'envoi pas mes mails depuis localhost
    Par andry.aime dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 26/11/2009, 13h40
  2. Erreur envoi mail avec phpmailer (fichier joint)
    Par rhadien dans le forum Langage
    Réponses: 1
    Dernier message: 02/07/2008, 11h23
  3. [Configuration] envoi de mail en localhost
    Par pipeauflute dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 04/06/2007, 22h36
  4. [PHPMailer] envoie de mail au format html via phpmailer()
    Par leclone dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 22/02/2007, 12h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo