Napraw błąd „Nieprawidłowy adres” po aktualizacji do Joomla 3.5.1

10

Po aktualizacji do Joomla 3.5.1 pojawia się Invalid Addressbłąd w niektórych moich rozszerzeniach korzystających z PHPMailer (system pocztowy Joomla).

Jak mogę to naprawić?

mavrosxristoforos
źródło

Odpowiedzi:

16

Odpowiedź dla użytkowników:

Jeśli pojawia się ten błąd, ponieważ używasz rozszerzenia, które wysyła e-maile, odwiedź stronę programisty i najpierw upewnij się, że używasz najnowszej wersji .

Jeśli masz 100% pewności, że korzystasz z najnowszej wersji, ale nadal pojawia się ten błąd, skontaktuj się z programistą i zapytaj go o ten błąd. Przesłanie im linku do tej strony może pomóc deweloperowi naprawić ten błąd .

Jeśli uważasz, że masz wystarczające doświadczenie z PHP, możesz spróbować samodzielnie załatać kod, korzystając z poniższej „odpowiedzi dla programistów”.

Pamiętaj, że nie będzie to trwałe rozwiązanie, a jedynie „łatka”, dopóki programista nie wyda nowej wersji.

Odpowiedź dla programistów:

Joomla 3.5.1 domyślnie włącza wyjątki PHPMailer. W ten sposób pojawiają się błędy, które wcześniej były ukryte.

Jeden przypadek, w którym pokazuje to teraz, dotyczy addReplyTofunkcji.

W Joomla 2.5 addReplyTomiał parametr tablicowy.

Począwszy od Joomla 3.0 ( tak, jeszcze w 2012 roku ) zmieniono funkcję JMail Joomla, aby nie obsługiwała tablic inaczej niż parametry łańcuchowe. Oparł się więc na bazowym kodzie PHPMailer, który jednak również się zmienił i tym samym nie dodaje poprawnie odpowiedzi do.

PHPMailer zgłasza wyjątek, jednak aż do Joomla 3.5.1 nikt nie widział tego wyjątku, jeśli nie włączyłeś obsługi wyjątków ręcznie!

Rozwiązanie

Możesz wyszukać swój kod rozszerzenia addReplyToi zmienić takie wiersze:

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

do tego:

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

Ponadto chcesz dodać try {} catch() {}kod w razie potrzeby, aby obsłużyć wyjątek pochodzący z JMail / PHPMailer.

Więcej informacji:

Dyskusja na temat Github

Odpowiedni temat na forach Joomla

mavrosxristoforos
źródło
1
Niezłe znalezisko. Życzę Joomla warunkiem takich stron to dla ich aktualizacji
Lodder
2
Jak wynika z edycji dokonanej przez hbit, jest to problem od wersji Joomla 3.0. Mogę jednak potwierdzić, że do Joomla 3.5 ten problem nie występuje w żadnej formie używającej starego kodu.
mavrosxristoforos
3

Wystąpił również ten błąd, gdy zmienna $ replyTo była pusta i musiałem jej użyć

if ( !empty($replyTo) ) {
  $mailer->addReplyTo($replyTo, $replyToName);
}
GreyHead
źródło