Solucione el error "Dirección no válida", después de actualizar a Joomla 3.5.1

10

Después de actualizar a Joomla 3.5.1, recibo un Invalid Addresserror en algunas de mis extensiones que usan PHPMailer (el sistema de correo de Joomla).

¿Cómo puedo arreglar esto?

mavrosxristoforos
fuente

Respuestas:

16

Respuesta para usuarios:

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.

Respuesta para desarrolladores:

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 addReplyTofunción.

En Joomla 2.5 addReplyTotení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 addReplyToy 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:

Discusión del tema en Github

Tema relevante en los foros de Joomla

mavrosxristoforos
fuente
1
Buen hallazgo Ojalá Joomla proporcionara páginas como esta para sus actualizaciones
Lodder
2
Según la edición realizada por hbit, este es un problema desde Joomla 3.0. Sin embargo, puedo confirmar que hasta Joomla 3.5, este problema no ocurre con ninguna forma que use el código anterior.
mavrosxristoforos
3

También recibí este error cuando la variable $ replyTo estaba vacía y tuve que usar

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