web-dev-qa-db-fra.com

Corrige l'erreur "Invalid Address" après la mise à niveau vers Joomla 3.5.1

Après la mise à niveau vers Joomla 3.5.1, je reçois un Invalid Address _ erreur dans certaines de mes extensions utilisant PHPMailer (le système de mailing Joomla).

Comment puis-je réparer cela?

10
mavrosxristoforos

Réponse pour les utilisateurs:

Si vous obtenez cette erreur parce que vous utilisez une extension qui envoie des courriers électroniques, veuillez vous rendre sur la page du développeur, puis vérifiez que vous utilisez bien la dernière version . .

Si vous êtes sûr à 100% que vous utilisez la version la plus récente, mais que vous obtenez toujours cette erreur, vous devez contacter le développeur et lui poser des questions à propos de cette erreur. En leur envoyant un lien vers cette page, peut aider le développeur à corriger cette erreur .

Si vous considérez que vous avez suffisamment d'expérience avec PHP, vous pouvez essayer de corriger le code vous-même, en utilisant la "réponse aux 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, les erreurs précédemment masquées apparaissent.

C’est le cas avec la fonction addReplyTo.

Dans Joomla 2.5, addReplyTo avait un paramètre de tableau.

À partir de Joomla 3.0 ( oui, en 2012 ) La fonction JMail de Joomla a été modifiée pour ne pas gérer les tableaux différemment des paramètres de chaîne. Ainsi, il s’est appuyé sur le code sous-jacent de PHPMailer, qui a toutefois changé également et ne permet donc pas d’ajouter 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 de l’exception manuellement!

Solution

Vous pouvez rechercher votre code d'extension pour addReplyTo et modifier les lignes comme ceci:

 $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 le code try {} catch() {} afin de gérer l’exception provenant de JMail/PHPMailer.

Plus d'information:

Discussion du problème sur Github

Sujet pertinent dans les forums Joomla

16

J'ai aussi eu cette erreur quand la variable $ replyTo était vide et devait être utilisée

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