it-swarm.com.de

Beheben Sie den Fehler "Ungültige Adresse" nach dem Upgrade auf Joomla 3.5.1

Nach dem Upgrade auf Joomla 3.5.1 erhalte ich ein Invalid Address Fehler in einigen meiner Erweiterungen, die PHPMailer (das Joomla Mailing-System) verwenden.

Wie kann ich das beheben?

10

Antwort für Benutzer:

Wenn Sie diesen Fehler erhalten, weil Sie eine Erweiterung verwenden, die E-Mails sendet, besuchen Sie bitte die Entwicklerseite und vergewissern Sie sich zuerst , dass Sie die neueste Version verwenden . .

Wenn Sie zu 100% sicher sind, dass Sie die neueste Version verwenden, diese Fehlermeldung jedoch weiterhin erhalten, sollten Sie sich an den Entwickler wenden und ihn nach dieser Fehlermeldung fragen. Das Senden eines Links zu dieser Seite kann dem Entwickler helfen, diesen Fehler zu beheben .

Wenn Sie der Meinung sind, dass Sie genug Erfahrung mit PHP haben, können Sie versuchen, den Code selbst zu patchen, indem Sie die unten stehende "Antwort für Entwickler" verwenden.

Bitte beachten Sie, dass dies keine dauerhafte Lösung ist, sondern nur ein "Patch", bis der Entwickler eine neue Version herausgibt.

Antwort für Entwickler:

Joomla 3.5.1 aktiviert standardmäßig die Ausnahmen von PHPMailer. So tauchen Fehler auf, die bisher verborgen waren.

Ein Fall, in dem dies jetzt angezeigt wird, ist die Funktion addReplyTo.

In Joomla 2.5 hatte addReplyTo einen Array-Parameter.

Beginnend mit Joomla 3.0 ( yes, back in 2012 ) Die JMail-Funktion von Joomla wurde dahingehend geändert, dass Arrays nicht mehr anders behandelt werden als String-Parameter. So stützte es sich auf den zugrunde liegenden PHPMailer-Code, der sich jedoch ebenfalls änderte und somit den Reply-To nicht korrekt hinzufügte.

PHPMailer löst dafür eine Ausnahme aus, aber bis Joomla 3.5.1 hat niemand diese Ausnahme gesehen, wenn Sie die Ausnahmebehandlung nicht manuell aktiviert haben!

Lösung

Sie können Ihren Erweiterungscode nach addReplyTo durchsuchen und die Zeilen folgendermaßen ändern:

 $mailer->addReplyTo(array($replyTo, $replyToName));

dazu:

if(version_compare(JVERSION, '3.0', 'ge')) {
  $mailer->addReplyTo($replyTo, $replyToName);
} else {
  $mailer->addReplyTo(array($replyTo, $replyToName));
}

Außerdem möchten Sie nach Bedarf try {} catch() {} Code hinzufügen, um die von JMail/PHPMailer ausgehende Ausnahme zu behandeln.

Mehr Informationen:

Diskussion des Problems auf Github

Relevantes Thema in Joomla-Foren

16

Ich habe diesen Fehler auch erhalten, als die Variable $ replyTo leer war und verwendet werden musste

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