Partage
  • Partager sur Facebook
  • Partager sur Twitter

Envoyé un mail en PHP / ERREUR avec GMAIL SMTP

erreur d'envoie de mail smtp gmail

Sujet résolu
    22 novembre 2018 à 11:32:23

    Salut a tous et a toutes voilà, j'ai fait un petit script php pour envoyé un mail qui me servira plus tard comme notification.

    Pour faire mon script j'ai suivi ce cour mais je me suis aussi aidé de beaucoup de forum pour régler les petits problèmes que j'ai eu.

    Sauf 1 bien sûr sinon je ne sert pas ici ^^ voici donc mon script :

    <?php
    // 	Déclaration de l'adresse de destination
    ini_set("SMTP", "gmail-smtp-in.l.google.com");
    ini_set("smtp_port", 465);//tester avec 465
    ini_set("sendmail_from","gentagphpnotif@gmail");
    $mail = 'gentagphpnotif@gmail';
    
    // 	On filtre les serveurs qui rencontrent des bogues
    if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $mail)) 
    	{
    		$passage_ligne = "\r\n";
    	}
    else
    	{
    		$passage_ligne = "\n";
    	}
    	
    //	Déclaration des messages au format texte et au format HTLM
    $message_text = "Salut a tous, voici un e-mail envoyé par un cript PHP.";
    $message_html = "<html><head></head><body><b>Salut à tous</b>, voici un e-mail envoyé par un <i>script PHP</i>.<body><html>";
    
    //	Lecture et mise en forme de la pièce jointe
    $fichier = fopen("image.jpg", "r");
    $attachement = fread($fichier, filesize("image.jpg"));
    $attachement = chunk_split(base64_encode($attachement));
    fclose($fichier);
    
    //	Création de la boundary
    $boundary = "-----=".md5(rand());
    $boundary_alt ="----=".md5(rand());
    
    //	Définition du sujet
    $sujet = "Test mail !";
    
    
    //	Création du header de l'e-mail.
    $header = "From: \"PHPgentag\"<gentagphpnotif@gmail.com>".$passage_ligne;
    $header.= "Reply-to: \"PHPgentag\"<gentagphpnotif@gmail.com>".$passage_ligne;
    $header.= "MIME-Version: 1.0".$passage_ligne;
    $header.= "Content-Type: multipart/mixed;".$passage_ligne." boundary=\"$boundary\"".$passage_ligne;
    
    //	Création du message
    $message = $passage_ligne."--".$boundary.$passage_ligne;
    $message.= "Content-Type: multipart/alternative;".$passage_ligne." boundary=\"$boundary_alt\"".$passage_ligne;
    $message.= $passage_ligne."--".$boundary_alt.$passage_ligne;
    
    //	Ajout du message au format texte
    $message.= "Content-Type: text/plain; charset=\"ISO-8859-1\"".$passage_ligne;
    $message.= "Content-transfer-Encoding: 10bit".$passage_ligne;
    $message.= $passage_ligne.$message_text.$passage_ligne;
    
    $message.= $passage_ligne."--".$boundary_alt.$passage_ligne;
    
    //	Ajout du message au format HTML
    $message.= "Content-Type: text/html; charset=\"ISO-8859-1\"".$passage_ligne;
    $message.= "Content-transfer-Encoding: 10bit".$passage_ligne;
    $message.= $passage_ligne.$message_html.$passage_ligne;
    
    //	Fermeture du boundary alternative
    $message.= $passage_ligne."--".$boundary_alt."--".$passage_ligne;
    
    $message.= $passage_ligne."--".$boundary.$passage_ligne;
    
    //	Ajout de la pièce jointe.
    $message.= "Content-Type: image/jpeg; name=\"image.jpg\"".$passage_ligne;
    $message.= "Content-transfer-Encoding: base64".$passage_ligne;
    $message.= "Content-Disposition: attachement; filename=\"image.jpg\"".$passage_ligne;
    $message.= $passage_ligne.$attachement.$passage_ligne.$passage_ligne;
    $message.= $passage_ligne."--".$boundary."--".$passage_ligne;
    
    //	Envoi de l'e-mail.
    mail($mail,$sujet,$message,$header);
    ?>
    

    Mon souci est que j'ai une erreur SMTP comme indiquer dans le titre voici l'erreur exact :


    Je précise que je travail actuellement avec WAMPSERVEUR (dernière version) mais en PHP 5.6.38, plus tard je serai avec la dernière version de PHP mais aussi sur un Serveur héberger par OVH (pour mon site).

    Si vous avez des questions hésitez pas

    Merci de votre aide d'avance.

    En attende de vos réponse ^^

    • Partager sur Facebook
    • Partager sur Twitter
      22 novembre 2018 à 11:35:21

      Salut !

      La version de PHP que tu utilises actuellement ne permet pas de se connecter aux serveurs SMTP de Google, parce que ceux-ci demandent une connexion sécurisée et que PHP 5.6 ne le permet pas. Je ne suis même pas sûr que des versions plus récentes le permettent — auquel cas il y aurait probablement des réglages supplémentaires à faire.

      Une des solutions que je te proposerais serait d'utiliser une librairie éprouvée pour envoyer tes mails. De nom, il y a PHPMailer et SwiftMailer que je connais.

      • Partager sur Facebook
      • Partager sur Twitter
        22 novembre 2018 à 11:54:13

        Ymox a écrit:

        Salut !

        La version de PHP que tu utilises actuellement ne permet pas de se connecter aux serveurs SMTP de Google, parce que ceux-ci demandent une connexion sécurisée et que PHP 5.6 ne le permet pas. Je ne suis même pas sûr que des versions plus récentes le permettent — auquel cas il y aurait probablement des réglages supplémentaires à faire.

        Une des solutions que je te proposerais serait d'utiliser une librairie éprouvée pour envoyer tes mails. De nom, il y a PHPMailer et SwiftMailer que je connais.


        Merci de ta réponse, je développe sur NotePad++ peux tu m'indiquer comment je peux ajouter ces extensions ?
        Et du coup comment je peux convertir mon code actuel en code utilisant PHPMailer ou SwiftMailer ? (sachant de je suis un débutant en php)

        -
        Edité par QuentinTréheux 22 novembre 2018 à 11:54:33

        • Partager sur Facebook
        • Partager sur Twitter
          22 novembre 2018 à 12:01:16

          Ce sont des fichiers de code à télécharger et mettre dans le dossier de ton projet, rien de sorcier.

          A côté de cela, la documentation de la librairie que tu choisiras devrait t'aider à voir comment adapter ton code pour l'utiliser.

          Mais si vraiment tu es un débutant en PHP, je pense qu'il risque d'être plus simple de se contenter de supprimer les trois ini_set() du début du code. La plupart du temps, cela fonctionnera sur les serveurs finaux. Mais avec WampServer, tu ne pourras pas tester ainsi.
          Il existe des solutions qui permettent de simuler l'envoi de mails avec un serveur PHP sous Windows, mais je ne sais honnêtement pas si c'est à ta portée.

          -
          Edité par Ymox 22 novembre 2018 à 12:01:56

          • Partager sur Facebook
          • Partager sur Twitter
            22 novembre 2018 à 12:05:20

            Bonjour,

            Où as-tu trouvé l'adresse gmail-smtp-in.l.google.com ? Je n'ai pas vu ça sur Google.

            • Partager sur Facebook
            • Partager sur Twitter
              22 novembre 2018 à 13:45:06

              philodick a écrit:

              Bonjour,

              Où as-tu trouvé l'adresse gmail-smtp-in.l.google.com ? Je n'ai pas vu ça sur Google.


              c'est lorsque j'ai fais des tests j'ai du oublié de remettre l'ancienne valeur après avoir tester

              Ymox a écrit:

              Ce sont des fichiers de code à télécharger et mettre dans le dossier de ton projet, rien de sorcier.

              A côté de cela, la documentation de la librairie que tu choisiras devrait t'aider à voir comment adapter ton code pour l'utiliser.

              Mais si vraiment tu es un débutant en PHP, je pense qu'il risque d'être plus simple de se contenter de supprimer les trois ini_set() du début du code. La plupart du temps, cela fonctionnera sur les serveurs finaux. Mais avec WampServer, tu ne pourras pas tester ainsi.
              Il existe des solutions qui permettent de simuler l'envoi de mails avec un serveur PHP sous Windows, mais je ne sais honnêtement pas si c'est à ta portée.

              -
              Edité par Ymox il y a environ 1 heure

               je le place dans quel dossier du coup ? (parce que sa m'aide pas beaucoup quand tu dis dans le dossier de ton projet car avec wamp il y a 10 000 dossier et j'utilise notepad++ qui n'as pas de lien avec wamp donc comment trouvera t'il la librairie ?)

              -
              Edité par QuentinTréheux 22 novembre 2018 à 14:00:23

              • Partager sur Facebook
              • Partager sur Twitter
                23 novembre 2018 à 9:05:21

                L'idéal, ce serait d'utiliser Composer, qui est un gestionnaire de dépendances (comprendre que ça permet "d'installer" des parties de code existantes et, plus intéressant, de mettre en place de quoi pouvoir utiliser ce code facilement), mais ça te demandera de te renseigner sur cet outil. A noter que du coup, il s'occupe même d'organiser les librairies dans un dossier.

                L'autre solution serait d'utiliser le mot-clé require_once qui permet grosso modo de faire comme si le code d'un fichier (par exemple un de ceux de la librairie) se trouvait dans un autre (un de deux où tu aurais besoin de la librairie).

                • Partager sur Facebook
                • Partager sur Twitter
                  23 novembre 2018 à 9:52:39

                  Ymox a écrit:

                  L'idéal, ce serait d'utiliser Composer, qui est un gestionnaire de dépendances (comprendre que ça permet "d'installer" des parties de code existantes et, plus intéressant, de mettre en place de quoi pouvoir utiliser ce code facilement), mais ça te demandera de te renseigner sur cet outil. A noter que du coup, il s'occupe même d'organiser les librairies dans un dossier.

                  L'autre solution serait d'utiliser le mot-clé require_once qui permet grosso modo de faire comme si le code d'un fichier (par exemple un de ceux de la librairie) se trouvait dans un autre (un de deux où tu aurais besoin de la librairie).


                  Je suis perdu :lol:
                  • Partager sur Facebook
                  • Partager sur Twitter
                    26 novembre 2018 à 16:33:17

                    j'ai finalement régler mon problème j'en ai "baver"

                    il faut donc phpmailer et sendmailer

                    <?php 
                    // on se connecte à MySQL 
                    $bdd = mysqli_connect ('localhost', 'root', '');
                    mysqli_select_db ($bdd, 'gentagfrfoge1616'); 
                    ?>
                    
                    <?php
                    require('phpmailer/class.phpmailer.php');
                    
                    $mail             = new PHPMailer();
                    $mail->IsSMTP();
                    $mail->Host       = "smtp.gmail.com";                    
                    $mail->SMTPAuth   = true;               
                    $mail->SMTPSecure = "ssl";                
                    $mail->Host       = "smtp.gmail.com";      
                    $mail->Port       = 465;                   
                    $mail->Username   = "*******@gmail.com";  
                    $mail->Password   = "*******";  
                    
                    // Expéditeur
                    $mail ->SetFrom('**********@gmail.com', 'GENTAG SERVEUR');
                    $mail->AddReplyTo("*******@gmail.com","GENTAG SERVEUR");
                    
                    // Destinataire
                    $address = "********@outlook.fr";
                    $mail ->AddAddress($address, "**** *****");
                    
                    // Objet
                    $mail ->Subject = 'Notification';
                    
                    // Votre Message
                    $mail ->MsgHTML('Test de mail avec phpmailer');
                    
                    // Envoi du mail avec gestion des erreurs
                    $mail->Send()
                    ?>

                    voilà le code qui fonctionne

                    • Partager sur Facebook
                    • Partager sur Twitter

                    Envoyé un mail en PHP / ERREUR avec GMAIL SMTP

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown