Después de actualizar a Joomla 3.5.1, recibo un Invalid Address
error en algunas de mis extensiones que usan PHPMailer (el sistema de correo de Joomla).
¿Cómo puedo arreglar esto?
Después de actualizar a Joomla 3.5.1, recibo un Invalid Address
error en algunas de mis extensiones que usan PHPMailer (el sistema de correo de Joomla).
¿Cómo puedo arreglar esto?
Respuestas:
Si recibe este error porque está utilizando alguna extensión que envía correos electrónicos, visite la página del desarrollador y primero asegúrese de estar utilizando la última versión .
Si está 100% seguro de que está utilizando la última versión, pero sigue recibiendo este error, debe comunicarse con el desarrollador y preguntarles sobre este error. Enviarles un enlace a esta página puede ayudar al desarrollador a corregir este error .
Si considera que tiene suficiente experiencia con PHP, puede intentar parchear el código por su cuenta, utilizando la "respuesta para desarrolladores" a continuación.
Tenga en cuenta que esto no será una solución permanente, sino solo un "parche", hasta que el desarrollador emita una nueva versión.
Joomla 3.5.1 habilita las excepciones de PHPMailer por defecto. Por lo tanto, aparecen errores que estaban ocultos anteriormente.
Un caso en el que esto se muestra ahora es con la addReplyTo
función.
En Joomla 2.5 addReplyTo
tenía un parámetro de matriz.
Comenzando con Joomla 3.0 ( sí, en 2012 ) La función JMail de Joomla cambió para no manejar matrices de manera diferente a los parámetros de cadena. Por lo tanto, se basó en el código subyacente PHPMailer, que sin embargo también cambió y, por lo tanto, no agrega la Respuesta a correctamente.
PHPMailer lanza una excepción para eso, sin embargo, hasta Joomla 3.5.1 nadie vio esa excepción si no habilitó el manejo de excepciones manualmente.
Solución
Puede buscar su código de extensión addReplyTo
y cambiar líneas como esta:
$mailer->addReplyTo(array($replyTo, $replyToName));
a esto:
if(version_compare(JVERSION, '3.0', 'ge')) {
$mailer->addReplyTo($replyTo, $replyToName);
} else {
$mailer->addReplyTo(array($replyTo, $replyToName));
}
Además, desea agregar el try {} catch() {}
código según sea necesario para manejar la excepción proveniente de JMail / PHPMailer.
Más información: