Correction de l'erreur «Adresse non valide», après la mise à niveau vers Joomla 3.5.1

10

Après la mise à niveau vers Joomla 3.5.1, je reçois une Invalid Addresserreur dans certaines de mes extensions qui utilisent PHPMailer (le système de messagerie Joomla).

Comment puis-je réparer cela?

mavrosxristoforos
la source

Réponses:

16

Réponse pour les utilisateurs:

Si vous obtenez cette erreur parce que vous utilisez une extension qui envoie des e-mails, veuillez visiter la page développeur et assurez-vous d' abord que vous utilisez la dernière version .

Si vous êtes sûr à 100% que vous utilisez la dernière version, mais que vous obtenez toujours cette erreur, vous devez contacter le développeur et lui poser des questions sur cette erreur. L'envoi d'un lien vers cette page peut aider le développeur à corriger cette erreur .

Si vous vous considérez suffisamment expérimenté avec PHP, vous pouvez essayer de patcher le code vous-même, en utilisant la "réponse pour les développeurs" ci-dessous.

Veuillez noter que ce ne sera pas une solution permanente, mais juste un "patch", jusqu'à ce que le développeur publie une nouvelle version.

Réponse pour les développeurs:

Joomla 3.5.1 active les exceptions de PHPMailer par défaut. Ainsi, des erreurs qui étaient auparavant cachées apparaissent.

Un cas où cela apparaît maintenant est avec la addReplyTofonction.

Dans Joomla 2.5 addReplyToavait un paramètre de tableau.

Depuis Joomla 3.0 ( oui, en 2012 ), la fonction JMail de Joomla a changé pour ne pas gérer les tableaux différemment des paramètres de chaîne. Ainsi, il s'est appuyé sur le code PHPMailer sous-jacent, qui a cependant également changé et n'a donc pas ajouté correctement le Reply-To.

PHPMailer lève une exception pour cela, cependant jusqu'à Joomla 3.5.1 personne n'a vu cette exception si vous n'avez pas activé la gestion des exceptions manuellement!

Solution

Vous pouvez rechercher votre code d'extension addReplyToet modifier des lignes comme celle-ci:

 $mailer->addReplyTo(array($replyTo, $replyToName));

pour ça:

if(version_compare(JVERSION, '3.0', 'ge')) {
  $mailer->addReplyTo($replyTo, $replyToName);
} else {
  $mailer->addReplyTo(array($replyTo, $replyToName));
}

De plus, vous souhaitez ajouter du try {} catch() {}code selon les besoins pour gérer l'exception provenant de JMail / PHPMailer.

Plus d'information:

Discussion de la question sur Github

Sujet pertinent dans les forums Joomla

mavrosxristoforos
la source
1
Belle trouvaille. Je souhaite que Joomla fournisse des pages comme celle-ci pour leurs mises à jour
Lodder
2
Selon l'édition effectuée par hbit, c'est un problème depuis Joomla 3.0. Cependant, je peux confirmer que jusqu'à Joomla 3.5, ce problème ne se produit avec aucun formulaire utilisant l'ancien code.
mavrosxristoforos
3

J'ai également eu cette erreur lorsque la variable $ replyTo était vide et a dû utiliser

if ( !empty($replyTo) ) {
  $mailer->addReplyTo($replyTo, $replyToName);
}
GreyHead
la source