Jump to content

Accents et swiftmailer : PHP Fatal error: Uncaught exception 'Swift_RfcComplianceException'


ntoug

Recommended Posts

Bonjour,

 

Je vous expose mon problème :

J'avais un pretashop 1.6.1.1 que j'ai migré vers 1.6.1.9 via 1click-upgrade.

 

Depuis (je pense que ça vient de là), je rencontre de nombreux problèmes sur les envois de mail.

En effet, de nombreux clients inscrits ont des caractères accentués dans leur adresse email, et prestashop part en Fatal Error (voir en bas l'erreur complète) :

 

 

Etrange à 1er abord, mais en cherchant sur internet, il s'avère que depuis 2014, la RFC a changé et autoriserai les caractères accentués dans les url et les emails.

D'après ce que je vois dans la classe Validate.php, méthode isEmail(), Prestashop a pris en compte depuis longtemps cette nouvelle norme (la validation de l'email autorise les caractères spécifiques aux pays, donc les accents)

 

D'après ce que j'ai vu sur des forums, la classe swiftmailer est très vieille sur les presta, mais aurait été mise à jour à partir de la 1.6.1.5.
Peut-être que le "1-clickupgrade" ne fait pas ce boulot ?

Un module gratuit est trouvable sur ce forum, qui gère son propre swiftmailer, mais qui ne doit en aucun cas être utilisé pour des versions > 1.6.1.4.
Et dans tous les cas, je ne suis pas fan de déléguer cette partie à un module.

 

Bref.. Quelqu'un a-t-il déjà eu ce problème ? les emails avec accents sont-ils bien autorisés et partent-ils correctement sur les versions récentes de Prestashop ?

 

Des conseils sur le sujet seraient appréciés :-)

 

 

 

 

Got error 'PHP message: PHP Fatal error:  Uncaught exception 'Swift_RfcComplianceException' with message 'Address in mailbox given [d\xc3\[email protected]] does not comply with RFC 2822, 3.6.2.' in /data/tools/swift/classes/Swift/Mime/Headers/MailboxHeader.php:348\nStack trace:\n#0 /data/tools/swift/classes/Swift/Mime/Headers/MailboxHeader.php(263): Swift_Mime_Headers_MailboxHeader->_assertValidAddress('d??lia.kessi@ya...')\n#1 /data/tools/swift/classes/Swift/Mime/Headers/MailboxHeader.php(106): Swift_Mime_Headers_MailboxHeader->normalizeMailboxes(Array)\n#2 /data/tools/swift/classes/Swift/Mime/Headers/MailboxHeader.php(63): Swift_Mime_Headers_MailboxHeader->setNameAddresses(Array)\n#3 /data/tools/swift/classes/Swift/Mime/SimpleHeaderFactory.php(58): Swift_Mime_Headers_MailboxHeader->setFieldBodyModel(Array)\n#4 /data/ools/swift/classes/Swift/Mime/SimpleHeaderSet.php(68): Swift_Mime_SimpleHeaderFactory->createMailbo

Edited by ntoug (see edit history)
Link to comment
Share on other sites

  • 3 weeks later...

Ca n'a pas l'air d’intéresser grand monde :-(
J'avais créé un override pour interdire en amont les emails avec accents.
Mais le problème est survenu à nouveau aujourd'hui avec une adresse email de type "[email protected]"

 

Je ne comprends pas plusieurs choses :
- comment est-ce possible que prestashop autorise dans ses règles de création d'email, des emails qui seront rejetés par la librairie SwiftMailer lors de l'utilisation plus tard ?
- comment est-ce possible que le try/catch swiftMailer parte en Fatal à cause de son exception pas définie ?

 

Et surtout.. comment corriger ça :-(

 

Help !!!

Link to comment
Share on other sites

Nouveautés sur le sujet !
Je viens de tester sur un prestashop complètement vierge 1.6.1.11.
Le problème est là aussi, et je n'ai pas trouvé de ticket ouvert sur la forge, donc un gros bug Presta pas encore réparé (ni identifié?)

 

Pour reproduire rapidement le problème :
- créez un user depuis le backoffice [email protected] (notez les 2 points consécutifs, le pb existe aussi avec des accents, ou tout autre chose rejeté par SwiftMailer)

- passez une commande depuis le BO avec ce user
- ensuite j'ai finalisé la commande en front (pour être sûr de rentrer dans le process d'envois des mails)
=>

 

[Thu Mar 02 16:09:05.892909 2017] [proxy_fcgi:error] [pid 24061:tid 139984853985024] [client ] AH01071: Got error 'PHP message: PHP Fatal error:  Uncaught exception 'Swift_RfcComplianceException' with message 'Address in mailbox given [[email protected]] does not comply with RFC 2822, 3.6.2.' in /data/ps16111/tools/swift/classes/Swift/Mime/Headers/MailboxHeader.php:348
Stack trace:
#0 /data/ps16111/tools/swift/classes/Swift/Mime/Headers/MailboxHeader.php(263): Swift_Mime_Headers_MailboxHeader->_assertValidAddress('[email protected]')
#1 /data/ps16111/tools/swift/classes/Swift/Mime/Headers/MailboxHeader.php(106): Swift_Mime_Headers_MailboxHeader->normalizeMailboxes(Array)
#2 /data/ps16111/tools/swift/classes/Swift/Mime/Headers/MailboxHeader.php(63): Swift_Mime_Headers_MailboxHeader->setNameAddresses(Array)
#3 /data/ps16111/tools/swift/classes/Swift/Mime/SimpleHeaderFactory.php(58): Swift_Mime_Headers_MailboxHeader->setFieldBodyModel(Array)
#4 /data/ps16111/tools/swift/classes/Swift/Mime/SimpleHeaderSet.php(68): Swift_Mime_Simple...
', referer: http://xxxx?fc=module&module=cheque&controller=payment
 

Link to comment
Share on other sites

  • 3 months later...
  • 6 months later...

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...