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

10

Nach dem Upgrade auf Joomla 3.5.1 wird Invalid Addressbei einigen meiner Erweiterungen, die PHPMailer (das Joomla Mailing-System) verwenden , eine Fehlermeldung angezeigt.

Wie kann ich das beheben?

mavrosxristoforos
quelle

Antworten:

16

Antwort für Benutzer:

Wenn Sie diesen Fehler erhalten, weil Sie eine Erweiterung verwenden, die E-Mails sendet, besuchen Sie die Entwicklerseite und stellen Sie zunächst sicher, dass Sie die neueste Version verwenden .

Wenn Sie zu 100% sicher sind, dass Sie die neueste Version verwenden, aber dennoch diesen Fehler erhalten, sollten Sie sich an den Entwickler wenden und ihn nach diesem Fehler fragen. Wenn Sie ihnen einen Link zu dieser Seite senden, kann der Entwickler diesen Fehler möglicherweise beheben .

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

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 werden zuvor ausgeblendete Fehler angezeigt.

Ein Fall, in dem dies jetzt zeigt, ist mit der addReplyToFunktion.

In Joomla 2.5 addReplyTohatte ein Array-Parameter.

Beginnend mit Joomla 3.0 ( ja, bereits 2012 ) wurde die JMail-Funktion von Joomla dahingehend geändert, dass Arrays nicht anders als Zeichenfolgenparameter behandelt werden. Daher stützte es sich auf den zugrunde liegenden PHPMailer-Code, der sich jedoch ebenfalls änderte und daher die Antwort an 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 Nebenstellencode addReplyTowie folgt durchsuchen und Zeilen ä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 try {} catch() {}Bedarf Code hinzufügen , um die von JMail / PHPMailer ausgehende Ausnahme zu behandeln.

Mehr Informationen:

Diskussion des Themas auf Github

Relevantes Thema in Joomla-Foren

mavrosxristoforos
quelle
1
Schöner Fund. Ich wünschte, Joomla hätte Seiten wie diese für ihre Updates bereitgestellt
Lodder
2
Laut der von hbit vorgenommenen Bearbeitung ist dies ein Problem seit Joomla 3.0. Ich kann jedoch bestätigen, dass dieses Problem bis zu Joomla 3.5 bei keinem Formular auftritt, das den alten Code verwendet.
Mavrosxristoforos
3

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

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