Envoi de mails par SMTP Gmail

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [Problème] Envoi de mails par SMTP Gmail

    Mon environnement
    Joomla 3.6.4

    Bonjour,

    Je viens d'écrire un script php pour envoyer des mails.
    Étant en phase de développement, en local, j'ai dû paramétrer la configuration de Joomla serveur -pour l'envoi des mails- en SMTP Gmail avec mes identifiant et mot de passe personnels (le test est bon). La version "php mail" ne fonctionnant pas sur mon pc (localhost apache2, php7, linux Ubuntu).
    Mais lors de mes tests d'envoi avec mon script, je me prends systématiquement le message d'erreur et refus d'envoi du mail :

    ---> "L'adresse mail xxxx est protégée contre les spammeurs. Veuillez bien activer Javascript dans votre navigateur !"

    Bizarre comme message. Après vérification de mon navigateur Chrome, Javascript est déjà activé.
    Nouveau test avec Firefox : même combat !

    Après bien des recherches, je tombe sur le conseil suivant : si vous envoyez vos mails par SMTP GMAIL, ajouter le paramètre suivant :

    Code PHP:
    --> $mailer->AltBody "Pour mieux lire ce message, utilisez un lecteur de courriels compatible HTML !"
    Ce que je fais, et sans résultat aucun : toujours le même message et mon mail qui ne part pas !

    Voici mon script :

    Code PHP:

    # Invoke JMail Class
    $mailer JFactory::getMailer();

    # Set sender array so that my name will show up neatly in your inbox
    $mailer->setSender($from);

    # Add a recipient -- this can be a single address (string) or an array of addresses
    $mailer->addRecipient($to);

    $mailer->setSubject($subject);
    $mailer->setBody($body);

    # If you would like to send as HTML, include this line; otherwise, leave it out
    $mailer->isHTML();

    # pour la compatibilité avec un éventuel envoi par smtp de Gmail
    $mailer->AltBody "Lisez ce message avec un lecteur compatible HTML";

    # Send once you have set all of your options
    $mailer->send(); 
    Merci pour votre aide !
    Dernière édition par Visiteur à 14/12/2016, 17h30

  • #2
    Re : Envoi de mails par SMTP Gmail

    Essaye en désactivant temporairement le plugin masquant les emails dans l'administration de Joomla...
    Cordialement,
    Chabi01 - http://www.xlformation.com

    Commentaire


    • #3
      Re : Envoi de mails par SMTP Gmail

      @ chabi01 :

      Je pense que tu veux parler du plugin de "protection des mails contre les spammeurs" (natif joomla) : même désactivé, et après effacement des caches de Joomla & de mon navigateur, rien n'y fait.
      J'ai toujours l'affichage de ce message d'erreur : "ceci est une adresse mail protégée contre les spammeurs. Vérifier que Javascript est activé dans votre navigateur" !!!
      Dernière édition par Visiteur à 15/12/2016, 16h05

      Commentaire


      • #4
        Re : Envoi de mails par SMTP Gmail

        Je viens également d'essayer le plugin de protection des mails de Regular Labs : même combat. Je n'ai plus l'affichage de l'erreur ... mais le mail ne part pas mieux !

        Commentaire


        • #5
          Re : Envoi de mails par SMTP Gmail

          Recommençons par le début : est-ce que l'envoi de mails fonctionnent depuis le site nativement (sans passer par ton script) ?
          Chabi01 - http://www.xlformation.com

          Commentaire


          • #6
            Re : Envoi de mails par SMTP Gmail

            Envoyé par chabi01 Voir le message
            Recommençons par le début : est-ce que l'envoi de mails fonctionnent depuis le site nativement (sans passer par ton script) ?
            Absolument : les messages système m'arrivent bien, et le test d'envoi d'un mail -intégré au paramétrage de l'envoi des mails sur l'onglet "serveur" de la configuration (mode admin) est positif ! En utilisant bien comme paramètres : smtp, smtp.gmail.com, etc...

            Commentaire


            • #7
              Re : Envoi de mails par SMTP Gmail

              Donc, c'est ton script qui ne fonctionne pas !
              Si je regarde l'exemple donné ici : https://docs.joomla.org/Sending_email_from_extensions
              cela ne correspond pas à ce que tu as codé, il me semble qu'il manque des éléments.

              Le test que tu dois faire : reprend le code donné en exemple dans la page et fais un test d'envoi avec le code fourni.
              Si cela fonctionne, alors le souci est bien dans ton code, une des variables manquantes par exemple.
              Autre chose : si tu ne mets pas de gestion d'erreur, tu ne peux pas savoir ce qui se passe... Encore une fois, regarde l'exemple.

              Cordialement,
              Chabi01 - http://www.xlformation.com

              Commentaire


              • #8
                Re : Envoi de mails par SMTP Gmail

                @ chabi01:
                C'est sympa de me donner un tel coup de main.

                Et c'est très précisément à partir de ce conseil précis que j'ai rédigé mon script. Le voici ci-dessous, et avec la gestion des erreurs qui ne marche pas non plus sur mon site.

                Code PHP:

                // On filtre les serveurs qui rencontrent des bogues

                $to $arr2[0];  // adresse mail du client (récupérée plus haut dans la BDD)

                if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#"$to)) { 

                $passage_ligne "\r\n";
                }else{
                $passage_ligne "\n";
                }

                // on initialise le message mail à envoyer

                $sujet "Rappel : nous n'avons pas reçu le paiement de votre commande n° $arr[0];

                $body "Mail envoyé à l'attention de : $nompre$passage_ligne $passage_ligne "Cher Client(e)," $passage_ligne "Vous avez préparé une commande sur notre site le $xdate pour un montant total de $xprix €. À ce jour, nous n'avons toujours pas reçu votre paiement." $passage_ligne "Si votre règlement a déjà été envoyé ou émis auprès de votre Banque, merci de ne pas tenir compte de ce mail." $passage_ligne "Bien cordialement," $passage_ligne "L'administration du site";

                # Invoke JMail Class

                $mailer JFactory::getMailer();

                # Set sender array so that my name will show up neatly in your inbox

                $config JFactory::getConfig();
                $sender = array( 
                    
                $config->get'mailfrom' ),
                    
                $config->get'fromname' 
                ); 
                $mailer->setSender($sender);
                # Add a recipient -- this can be a single address (string) or an array of addresses

                $mailer->addRecipient($to);

                $mailer->setSubject($subject);
                $mailer->setBody($body);

                # If you would like to send as HTML, include this line; otherwise, leave it out
                $mailer->isHTML();

                $mailer->Encoding 'base64';
                 

                // Optionally add embedded image
                $mailer->AddEmbeddedImageJPATH_COMPONENT.'/images/logo-plus.jpg');
                 

                # pour la compatibilité avec un éventuel envoi par smtp de Gmail
                $mailer->AltBody "Pour mieux lire ce message, utilisez un lecteur de courriels compatible HTML !";

                # Send once you have set all of your options
                 
                $envoi $mailer->send(); 

                if (
                $envoi) { //transmission du mail

                      
                echo "Mail de relance envoyé pour impayé sur n° de commande $arr[0] à l'adresse mail $to<br />";

                }else{

                     echo 
                "Le mail n'a pas été envoyé. Message d'erreur = " $send->get('message');

                }

                $mailer->ClearAdresses(); 

                Commentaire


                • #9
                  Re : Envoi de mails par SMTP Gmail

                  Si tu fais un echo de tes variables dans ton script avant de l'envoyer (ou dans une console), toutes les variables sont bien présentes ? Il ne te manque rien ?

                  Quand tu dis que ta gestion d'erreur ne fonctionne pas, c'est qu'elle ne fonctionne pas du tout ? Tu devrais avoir l'un ou l'autre des echo qui s'affiche non ?
                  Chabi01 - http://www.xlformation.com

                  Commentaire


                  • #10
                    Re : Envoi de mails par SMTP Gmail

                    $mailer->isHTML(true);
                    ca peut être aussi un soucis de quote. sans voir les variables impossible d en dire plus....

                    Commentaire


                    • #11
                      Re : Envoi de mails par SMTP Gmail

                      donc un petit echo, soit sur écran, soit sur console Firebug pour voir ce que tu génères serait pas mal
                      Chabi01 - http://www.xlformation.com

                      Commentaire


                      • #12
                        Re : Envoi de mails par SMTP Gmail

                        @ chabi01 :

                        Hourra !!!! Mon système d'envoi de mails fonctionne enfin, après bien des heures de galère. J'avais commis une erreur sql, et j'en ai profité pour tout refondre mon script.

                        Sur ce problème, je n'ai plus qu'un petit souci pour joindre un logo ou une image en te ou en pied de mail pour le rendre moins sinistre. Le logo que j'ai déclaré n'apparaît pas, et je n'ai pas d'erreur. Peut-être n'est-il pas possible de le faire fonctionner avec localhost, puisqu'il semble obligatoire d'indiquer une adresse complète pour l'image concernée ?

                        Au risque de me répéter, je te remercie beaucoup chabi01 pour tes aides précieuses et particulièrement pertinentes. Bon week-end !

                        Commentaire


                        • #13
                          Re : Envoi de mails par SMTP Gmail

                          En localhost, tu peux mais tu es obligé d'utiliser la variable pour avoir ton chemin de base puis de compléter.
                          Cela remplacera l'url de base par ton chemin complet vers le site et sera autant fonctionnel quand tu passeras en ligne.

                          Quelque chose comme :
                          Code:
                          <?php echo $this->baseurl ?>/ton_dossier_images/tonimage.jpg
                          Content que tu aies résolu quasiment complètement ton souci
                          Chabi01 - http://www.xlformation.com

                          Commentaire

                          Annonce

                          Réduire
                          Aucune annonce pour le moment.

                          Partenaire de l'association

                          Réduire

                          Hébergeur Web PlanetHoster
                          Travaille ...
                          X