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 lendrevi à 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 lendrevi à 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....
                    Un site pour comparer des solutions : https://comparatifs-informaticien51.joomla.com
                    un site personnel, sur Joomla, linux, windows et Powershell : https://informaticien51.joomla.com/

                    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
                          1 sur 2 < >

                          C'est [Réglé] et on n'en parle plus ?

                          A quoi ça sert ?
                          La mention [Réglé] permet aux visiteurs d'identifier rapidement les messages qui ont trouvé une solution.

                          Merci donc d'utiliser cette fonctionnalité afin de faciliter la navigation et la recherche d'informations de tous sur le forum.

                          Si vous deviez oublier de porter cette mention, nous nous permettrons de le faire à votre place... mais seulement une fois
                          Comment ajouter la mention [Réglé] à votre discussion ?
                          1 - Aller sur votre discussion et éditer votre premier message :


                          2 - Cliquer sur la liste déroulante Préfixe.

                          3 - Choisir le préfixe [Réglé].


                          4 - Et voilà… votre discussion est désormais identifiée comme réglée.

                          2 sur 2 < >

                          Assistance au forum - Outil de publication d'infos de votre site

                          Compatibilité: PHP 4.1,PHP4, 5, 6DEV MySQL 3.2 - 5.5 MySQLi from 4.1 ( @ >=PHP 4.4.9)

                          Support Version de Joomla! : | J!3.0 | J!2.5.xx | J!1.7.xx | J!1.6.xx | J1.5.xx | J!1.0.xx |

                          Version française (FR) D'autres versions sont disponibles depuis la version originale de FPA

                          UTILISER À VOS PROPRES RISQUES :
                          L'exactitude et l'exhaustivité de ce script ainsi que la documentation ne sont pas garanties et aucune responsabilité ne sera acceptée pour tout dommage, questions ou confusion provoquée par l'utilisation de ce script.

                          Problèmes connus :
                          FPA n'est actuellement pas compatible avec des sites Joomla qui ont eu leur fichier configuration.php déplacé en dehors du répertoire public_html.

                          Installation :

                          1. Téléchargez l'archive souhaitée : http://afuj.github.io/FPA/

                          Archive zip : https://github.com/AFUJ/FPA/zipball/master

                          2. Décompressez le fichier de package téléchargé sur votre propre ordinateur (à l'aide de WinZip ou d'un outil de décompression natif).

                          3. Lisez le fichier LISEZMOI inclus pour toutes les notes de versions spécifiques.

                          4. LIRE le fichier de documentation inclus pour obtenir des instructions d'utilisation détaillées.

                          5. Téléchargez le script fpa-fr.php à la racine de votre site Joomla!. C'est l'endroit que vous avez installé Joomla et ce n'est pas la racine principale de votre serveur. Voir les exemples ci-dessous.

                          6. Exécutez le script via votre navigateur en tapant: http:// www. votresite .com/ fpa-fr.php
                          et remplacer www. votresite .com par votre nom de domaine


                          Exemples:
                          Joomla! est installé dans votre répertoire web et vous avez installé la version française du fichier FPA:
                          Télécharger le script fpa-fr.php dans: /public_html/
                          Pour executer le script: http://www..com/fpa-fr.php

                          Joomla! est installé dans un sous-répertoire nommé "cms" et vous avez installé la version française du fichier FPA:
                          Télécharger le script fpa-fr.php dans: /public_html/cms/
                          Pour executer le script: http://www..com/cms/fpa-fr.php

                          En raison de la nature très sensible de l'information affichée par le script FPA, il doit être retiré immédiatement du serveur après son utilisation.

                          Pour supprimer le script de votre site, utilisez le lien de script de suppression fourni en haut de la page du script. Si le lien de suppression échoue pour supprimer le script, utilisez votre programme FTP pour le supprimer manuellement ou changer le nom une fois que le script a généré les données du site et le message publié sur le forum. Si le script est toujours présent sur le site, il peut être utilisé pour recueillir suffisamment d'informations pour pirater votre site. Le retrait du script empêche des étrangers de l'utiliser pour jeter un oeil à la façon dont votre site est structuré et de détecter les défauts qui peuvent être utilisé à vos dépends.
                          Voir plus
                          Voir moins

                          Partenaire de l'association

                          Réduire

                          Hébergeur Web PlanetHoster
                          Travaille ...
                          X