Probleme envoie email avec plxMyShop

ppmtppmt Member
J'utilise le plugin plxMyShop depuis quelque temps sur mon site et tout marchait tres bien

Sauf que ce soir un de mes client m'a fait remarque que lors de la validation de la commande il recoit un gros message d'erreurs:

[== Indéfini ==]
Your basket    Total (delivery cost included)£0.00
An error occured during the sending of your order email.


"; labelMailCart.style.display='inline-block'; firstnameCart.style.display='inline-block'; firstnameCart.value="Philippe"; labelFirstnameCart.style.display='inline-block'; lastnameCart.style.display='inline-block'; lastnameCart.value="Le Toquin"; labelLastnameCart.style.display='inline-block'; adressCart.style.display='inline-block'; adressCart.value="High View"; labelAddrCart.style.display='inline-block'; postcodeCart.style.display='inline-block'; postcodeCart.value="TF9 3QY"; labelPostcodeCart.style.display='inline-block'; cityCart.style.display='inline-block'; cityCart.value="Market Drayton"; labelCityCart.style.display='inline-block'; countryCart.style.display='inline-block'; countryCart.value="United Kingdom"; labelCountryCart.style.display='inline-block'; telCart.style.display='inline-block'; telCart.value="01630695825"; labelTelCart.style.display='inline-block'; idSuite.value="8"; numCart.value="8"; nprod=8; realnprod=8; tmpship=0; total=10.7; if (total >0) displayTotal=(total+0); else displayTotal=0; pos_devise= "before"; devise= "£"; if (pos_devise == "before") { price= devise+displayTotal.toFixed(2);} else { price= displayTotal.toFixed(2)+devise;} totalCart.innerHTML="Total (delivery cost included) : "+price; if (pos_devise == "before") { price= devise+"0";} else { price= "0"+devise;} spanshipping.innerHTML="

Delivery cost : " + price + " for 0.21 kg
"; totalcommand.value=total; } function changePaymentMethod(method) { if (method=="cheque")formCart.action="#panier"; else if (method=="cash") formCart.action="#panier"; else if (method=="paypal") formCart.action="#panier"; } function shippingMethod(kg, op){ if (op==1)totalkg=(parseFloat(totalkg.toFixed(3))+parseFloat(kg)); if (op==0)totalkg=(parseFloat(totalkg.toFixed(3))-parseFloat(kg)); accurecept=0; if (totalkg.toFixed(3)<=0.000) { shippingPrice=0.00; } else if (totalkg.toFixed(3)<=0) { shippingPrice=0+accurecept; } else if (totalkg.toFixed(3)<=0) { shippingPrice=0+accurecept; } else if (totalkg.toFixed(3)<=0) { shippingPrice=0+accurecept; } else if (totalkg.toFixed(3)<=0) { shippingPrice=0+accurecept; } else if (totalkg.toFixed(3)<=0) { shippingPrice=0+accurecept; } else if (totalkg.toFixed(3)<=0) { shippingPrice=0+accurecept; } else if (totalkg.toFixed(3)<=0) { shippingPrice=0+accurecept; } else if (totalkg.toFixed(3)<=0) { shippingPrice=0+accurecept; } else if (totalkg.toFixed(3)<=0) { shippingPrice=0+accurecept; } else if (totalkg.toFixed(3)<=0) { shippingPrice=0+accurecept; } else if (totalkg.toFixed(3)<=0) { shippingPrice=0+accurecept; } return shippingPrice; } 

En cherchant un peu avec le debugger de Firefox je peux voir qu'au moment de valider la commande apres avoir entrer tout les champs obligatoire je me retrouve avec cette erreur dans le fichier panier.php
[== Indéfini ==]
SyntaxError: missing ; before statement panier:202:34


Voici le contenu de la ligne 202 dans la source html
[== JavaScript ==]
    mailCart.value="<script type="text/javascript">eval(unescape('%64%6f%63%75%6d%65%6e%74%2e%77%72%69%74%65%28%27%61%61%61%40%62%62%62%2e%63%63%63%27%29'))</script>";

et ce qui cree cette ligne dans le fichier panier.php
[== JavaScript ==]
    mailCart.value="<?php echo (isset($_POST['email'])?$_POST['email']:''); ?>";


Donc il manquerait un point virgule mais ou? et pourquoi a t'il disparu soudainement?

Et aussi par quel magie l'email est-il remplace par un eval?

Merci d'avance car la je suis coince!

Réponses

  • StéphaneStéphane Member, Former PluXml Project Manager
    Bonjour

    Le coup du eval, ça sent le plugin qui protège les adresses emails pour eviter les robots de les recupérer.
    Aurais-tu installé un plugin dernièrement. Si tu nous donnes la liste de tes plugins ça pourra peut-etre nous donner une piste

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • ppmtppmt Member
    Non J'ai rien installe recemment..

    C'est peut-etre plxMyShop qui fait ca mais je ne trouve pas ou si c'est le cas.
    Vu ta question j'en deduit que c'est pas une fonction de PluXml non plus :)

    Voila ma liste de plugin
    FAQ
    plxMyContact
    plxMyShop
    SimpleStat
    spxdatas (pas activé)
    spxlightbox
    spxplugindownloader
    spxshortcodes
    spxtynimce
    Stay_connected
    vignette
  • ppmtppmt Member
    J'ai trouve un site qui me decode le eval

    http://coderstoolbox.net/string/#!encoding=url&action=decode&charset=us_ascii

    Et voila le resultat

    document.write('aaa@bbb.ccc')

    C'est bien l'addresse de test que j'ai utilise! Reste a savoir qui fait ca et ou est le ; manquant!
  • ce n'est pas plxMyShop qui fait fait ça, je viens de regarder le code source

    est ce que tu peux faire un simple fichier PHP qui contient juste "aaa@bbb.ccc" pour voir ce que ça produit ?
  • ppmtppmt Member
    mars 2016 modifié
    Desole je ne suis pas sur de comprendre. Tu veux que je fasse un fichier genre test.php et dedans je mets juste aaa@bbb.ccc ?

    edit:

    J'ai cree un fichier comme ca:
    [== PHP ==]
    
    <!DOCTYPE html>
    <script type="text/javascript">
    
    var total=0;
    var totalkg=0;
    var shippingPrice=0;
    var tmpship=0;
    var nprod=0;
    var realnprod=0;
    mailCart.value="<?php echo "aaa@bbb.ccc"; ?>";
    </script>
    

    et voila le code source de la page
    [== HTML ==]
    <!DOCTYPE html>
    <script type="text/javascript">
    
    var total=0;
    var totalkg=0;
    var shippingPrice=0;
    var tmpship=0;
    var nprod=0;
    var realnprod=0;
    mailCart.value="aaa@bbb.ccc";
    </script>
    

    pas de modif!
  • oui c'était à ce test dont je pensais pour vérifier que ce n'est pas l'hébergement qui fait cette modification.
    une autre idée : est ce que tu peux mettre une adresse e-mail dans une page statique pour voir si elle est transformée ?

    petite parenthèse : je viens de voir sur ton site que dans le menu "Panier" n'est pas traduit. est ce que c'est fait exprès ? après tout le travail que tu as fait pour rendre cette extension localisable, je veux bien jeter un coup d’œil à ça si tu en as besoin.
  • ppmtppmt Member
    Merci pour ton aide Mathieu. Mon fils m'a plusieurs fois fait la remarque que en effet Panier n'est pas traduit :)

    J'ai modifie la ligne du script pour coder un email en dur:
    [== Indéfini ==]
        mailCart.value="<?php echo (isset($_POST["email"])?"bbb@bbb.ccc":''); ?>";
    

    Le resultat est le meme.

    Il y definitivement quelque chose qui assainit l'email...J'ai fait un essai en mettant aaa+bbb@ccc.ddd

    et le decodage me retourne seulement bbb@ccc.ddd
  • ppmtppmt Member
    J'ai rajoute un email dans la page statique "About the Baker" en bas de la page

    La page affiche correctement l'email mais en regardant le code source on voit ca:
    [== JavaScript ==]
    <p><script type="text/javascript">eval(unescape('%64%6f%63%75%6d%65%6e%74%2e%77%72%69%74%65%28%27%70%68%69%6c%69%70%70%65%40%6c%6f%6e%67%73%6c%6f%77%62%61%6b%65%72%79%2e%63%6f%2e%75%6b%27%29'))</script></p>
    
    
    
    
  • ppmtppmt Member
    Du progres!!!

    J'ai reussi a indentifier que le probleme est cause par le plugin spxtynimce (versio 3.0)

    Si je le desactive sur la page statique l'adresse email est maintenant en claire dans le source.

    Sur le panier je n'ai plus ce mechant message d'erreur mais le mail n'est toujours pas envoye. Il y a toujours quelquechose qui coince mais au moins je progresse!
  • ppmtppmt Member
    ppmt a écrit:
    Du progres!!!

    J'ai réussi a identifier que le problème est cause par le plugin spxtynimce (version 3.0)

    Si je le désactive sur la page statique l'adresse email est maintenant en claire dans le source.

    Sur le panier je n'ai plus ce méchant message d'erreur mais le mail n'est toujours pas envoyé. Il y a toujours quelque chose qui coince mais au moins je progresse!

    Ceux qui est bizarre c'est que sur ma version de développement sur mon PC j'ai la même config et la tout marche avec le même plugin :(

    Je me demande si je ne vais pas réinstaller le tout
  • ppmtppmt Member
    Bon finalement je ne comprends plus rien.

    En creusant de plus en plus voila ce que j'ai trouve.

    Dans la config de plxMyShop je lui dit que mon email est philippe@domain1.com

    Domain1 etant different du site web.

    Quand c'est comme ca ca plante.

    J'ai donc changer pour utiliser une addresse du meme domaine. L'amelioratio c'est que le commercant recoit maintenant un email de confirmation
    Par contre le client lui ne recoit rien

    Maintenant dans le panier si je met un email qui appartient au site alors la tout marche!

    Je pense donc que le probleme ne vient pas ni de plxMyShop ni de PluXml mais plutot de la maniere dont le fournisseur gere l'envoi des mails

    Je vais leur poser une question pour voir! C'est pas pratique si je suis le seul a pouvoir me commander du pain :)
  • la dernière fois que j'ai un problème comme ça, mon hébergeur m'a répondu que les e-mails ne sont pas fiables est qu'ils ne pouvaient rien faire si l'e-mail part de leur serveur mais qu'il n'arrive pas

    pour spxtynimce je vais voir si je trouve quelque chose
  • ppmtppmt Member
    Ben oui mais la je ne suis meme pas sure que l'email parte.

    Je vais essayer de faire un fichier php qui enverra un juste un email pour voir

    C'est quand meme pas normal que si j'utilise des emails de mon domaine ca marche tres bien (pas d'erreur) mais si j'utilise un email d'un autre domaine ca me met une erreur!
  • c'est bien dans cette extension qu'il y a le problème, dans la configuration tu peux trouver une option "Activer la protection d'Email"
  • ppmtppmt Member
    Ah ben oui en effet....j'aurais pu le verifier moi meme :(

    Merci pour ca Mathieu

    Il me reste plus qu'a resoudre le probleme du mail d'un domaine different

    Pourrais tu essayer de ton cote de faire une commande fictive...si ca marche je t'expedie un croissant :)
  • merci mais ta proposition tombe mal, depuis début janvier je fais des expériences avec un régime où j'essaye de ne plus manger de croissant :D

    pour la traduction de "Panier", c'est gérer dans la nouvelle version que tu peux télécharger là :
    https://github.com/davidlhoumaud/plxMyShop/archive/develop.zip
    histoire d'être complet, j'ai même rajouté un crochet qui permet de modifier le texte par défaut
  • ppmtppmt Member
    j'ai bien mis a jour!

    Merci pour ca

    Je suis en train de parler avec mon fournisseur mais c'est pas prometteur.

    Par contre je me suis creer un petit fichier pour envoyer des mails qui utilise la meme fonction mail() et ca marche bien. Alors du coup je suis un peu perplexe!
  • ppmtppmt Member
    mars 2016 modifié
    Bon me revoila avec un peu plus d'info...comme Mathieu m'avait prevenu je ne suis pas arrive a grand chose avec mon fournisseur. C'est comme si il ne comprenait pas ce que je leur disais. Il n'arrete pas de me dire de verifier la config de mon client mail!!!! C'est bien la 1ere fois que je suis "decu" par leur support...

    Bon cela dit j'ai fait quelque experience et il semblerait que le problem soit au niveau du contenu du $headers.

    Pour recapituler:

    Si pour la commande j'utilise une adresse email de mon domaine alors tout marche pas de probleme.
    Si j'utilise une autre addresse (cas normal) alors ca casse. je recois le message d'erreur et la commande n'est pas enregistre.

    En simplifiant le $header au maximum pour avoir juste ca:

    "From: addresse_email_du_domaine"

    et bien la ca marche. L'email est bien envoye mais du coup le mail n'est plus en html mais du seul texte

    Il y a quelque chose dans le header que sendmail (utilise par mail() ) n'aime pas mais je n'arrive pas a trouve quoi
  • ppmtppmt Member
    Ca y est je crois que j'ai resolu le probleme.

    En fait il y 2 problemes:

    le 1er c'est que l'option de spxtynimce pour proteger l'email perturbe le plugin. Du coup j'ai du desactiver cette option.

    le 2eme probleme je l'ai isole apres des centaines d'essai a la ligne 1089 du fichier plxMyShop.php
    [== PHP ==]
    				$headers  = "MIME-Version: 1.0\r\nFrom: \"" . $SHOPNAME. "\"<" . $TONMAIL . ">\r\n";
    

    J'ai change la ligne pour rajouter un espace avant le < pour separe le nom du magasin de l'email. Si je supprime cet espace ca passe pas et le script retourne une erreur.
    [== PHP ==]
    				$headers  = "MIME-Version: 1.0\r\nFrom: \"" . $SHOPNAME. "\" <" . $TONMAIL . ">\r\n";
    

    Ce que je ne m'explique pas par contre c'est que sur mon site de dev en local ca marche tres bien sans cet espace!
Connectez-vous ou Inscrivez-vous pour répondre.