Dopo l'aggiornamento a Joomla 3.5.1, ricevo un Invalid Address
errore in alcune delle mie estensioni che utilizzano PHPMailer (il sistema di mailing Joomla).
Come posso risolvere questo problema?
Dopo l'aggiornamento a Joomla 3.5.1, ricevo un Invalid Address
errore in alcune delle mie estensioni che utilizzano PHPMailer (il sistema di mailing Joomla).
Come posso risolvere questo problema?
Risposte:
Se ricevi questo errore perché stai utilizzando un'estensione che invia e-mail, visita la pagina degli sviluppatori e assicurati innanzitutto di utilizzare la versione più recente .
Se sei sicuro al 100% di utilizzare la versione più recente, ma stai ancora riscontrando questo errore, devi contattare lo sviluppatore e chiedere loro questo errore. L'invio di un collegamento a questa pagina può aiutare lo sviluppatore a correggere questo errore .
Se ti consideri abbastanza esperto con PHP, puoi provare a patchare il codice da solo, usando la "risposta per gli sviluppatori", di seguito.
Si noti che questa non sarà una soluzione permanente, ma solo una "patch", fino a quando lo sviluppatore non emetterà una nuova versione.
Joomla 3.5.1 abilita le eccezioni di PHPMailer per impostazione predefinita. Pertanto vengono visualizzati errori precedentemente nascosti.
Un caso in cui questo mostra ora è con la addReplyTo
funzione.
In Joomla 2.5 addReplyTo
aveva un parametro array.
A partire da Joomla 3.0 ( sì, nel 2012 ) la funzione JMail di Joomla è cambiata per non gestire le matrici in modo diverso dai parametri di stringa. Quindi si basava sul codice PHPMailer sottostante, che tuttavia è cambiato anche e quindi non riesce ad aggiungere correttamente il Reply-To.
PHPMailer lancia un'eccezione per quello, comunque fino a Joomla 3.5.1 nessuno ha visto quell'eccezione se non hai abilitato la gestione manuale dell'eccezione!
Soluzione
Puoi cercare il tuo codice di estensione addReplyTo
e modificare le righe in questo modo:
$mailer->addReplyTo(array($replyTo, $replyToName));
a questa:
if(version_compare(JVERSION, '3.0', 'ge')) {
$mailer->addReplyTo($replyTo, $replyToName);
} else {
$mailer->addReplyTo(array($replyTo, $replyToName));
}
Inoltre, si desidera aggiungere il try {} catch() {}
codice necessario per gestire l'eccezione proveniente da JMail / PHPMailer.
Maggiori informazioni: