Après la mise à niveau vers Joomla 3.5.1, je reçois une Invalid Address
erreur dans certaines de mes extensions qui utilisent PHPMailer (le système de messagerie Joomla).
Comment puis-je réparer cela?
la source
Après la mise à niveau vers Joomla 3.5.1, je reçois une Invalid Address
erreur dans certaines de mes extensions qui utilisent PHPMailer (le système de messagerie Joomla).
Comment puis-je réparer cela?
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.
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 addReplyTo
fonction.
Dans Joomla 2.5 addReplyTo
avait 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 addReplyTo
et 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:
J'ai également eu cette erreur lorsque la variable $ replyTo était vide et a dû utiliser
la source