Jump to content

Paypal error mailalert mails avec accents


Poppy381

Recommended Posts

Le phénomène :

Prestashop 1.6

Un produit est hors stock, le plug in "mail alert" est installé pour que les clients puissent s'informer de la nouvelle mise à dispo.

Une fois le produit remis à dispo (quantité supérieur à 0), les mails ne sont pas tous envoyés (on le sait si on fait une requete dans la table d'abonnements).

Mais bien pire :

- Un client passe commande de ce produit :

La commande est finalisée sur Paypal mais le client voit un message d'erreur avec une histoire d'email.La commande est annulée (canceled) sur le Back office. Il n'y a aucun article dans la commande, pas de transporteur et pas de transactions paypal.

 

Pour reproduit le problème je me suis connecté en mode test Paypal. Avec un compte fake pour le marchand et un compte fake client.

Le message d'erreur nous disait qu'il y avait un problème avec la classe Swift et notamment un des emails de la table des inscrits au produit : Cet email ne correspond pas à la norme "j'ai oublié son petit nom" car il comporte un accent du style dédé@dédé.fr. Du coup tout le script est pété. Donc la classe Swift est complètement désuette pour Prestashop 1.6, je ne sais pas si c'est le cas sur 1.7 mais faites attention ça a engendré beaucoup de maintenance de mon côté (réinsertion des lignes dans les tables à la main sur mysql, rassurer les clients, remboursement des doubles paiements).

D'après ce que j'ai lu sur je ne sais quel site les caractères accentués sont aujourd'hui autorisés dans les emails d'après les nouvelles normes...

Je vais Patcher ça de mon coté quand j'aurais un petit moment mais pour le prochain qui aura le même souci il passera pas 3 plombes à chercher :).

Franck

 

 

Link to comment
Share on other sites

Répertorié depuis 2ans:

Citation

Prestashop utilise la librairie Swift version 4 pour envoyer les mails.
Cette librarie applique un contrôle de la grammaire selon la RFC 2822 (avril 2001).
Cette RFC a été remplacé par la RFC 6531 (février 2012).
La librarie Swift n'intègre cette grammaire qu'a partir de la version 5.5+ (via package symfony).

Pour admettre les emails accentués, il faut désactiver la génération d'erreur en cas de grammaire non reconnu.

Dans le fichier tools/swift/classes/Swift/Mime/Headers/MailboxHeader.php aux alentours de la ligne @344

private function _assertValidAddress($address)
    {
        if (!preg_match('/^'.$this->getGrammar()->getDefinition('addr-spec').'$/D',
            $address)) {
            if (0) throw new Swift_RfcComplianceException(
                'Address in mailbox given ['.$address.
                '] does not comply with RFC 2822, 3.6.2.'
                );
        }
    }

 

  • Like 1
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...