Po aktualizacji do Joomla 3.5.1 pojawia się Invalid Address
błąd w niektórych moich rozszerzeniach korzystających z PHPMailer (system pocztowy Joomla).
Jak mogę to naprawić?
źródło
Po aktualizacji do Joomla 3.5.1 pojawia się Invalid Address
błąd w niektórych moich rozszerzeniach korzystających z PHPMailer (system pocztowy Joomla).
Jak mogę to naprawić?
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.
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 addReplyTo
funkcji.
W Joomla 2.5 addReplyTo
miał 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 addReplyTo
i 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:
Wystąpił również ten błąd, gdy zmienna $ replyTo była pusta i musiałem jej użyć
źródło