Після оновлення до Joomla 3.5.1 я отримую Invalid Address
помилку в деяких своїх розширеннях, які використовують PHPMailer (система Joomla Mailing).
Як я можу це виправити?
Після оновлення до Joomla 3.5.1 я отримую Invalid Address
помилку в деяких своїх розширеннях, які використовують PHPMailer (система Joomla Mailing).
Як я можу це виправити?
Відповіді:
Якщо ви отримуєте цю помилку через те, що ви використовуєте розширення, яке надсилає електронні листи, відвідайте сторінку розробника та спочатку переконайтеся, що ви використовуєте останню версію .
Якщо ви на 100% впевнені, що використовуєте останню версію, але все ж отримуєте цю помилку, вам слід зв’язатися з розробником і запитати їх про цю помилку. Надсилаючи їм посилання на цю сторінку, може допомогти розробнику виправити цю помилку .
Якщо ви вважаєте себе достатньо досвідченим у роботі з PHP, ви можете спробувати виправити код самостійно, використовуючи "відповідь для розробників" нижче.
Зверніть увагу, що це не буде постійним рішенням, а просто "виправленням", поки розробник не випустить нову версію.
Joomla 3.5.1 за замовчуванням дозволяє винятки PHPMailer. Таким чином виявляються помилки, які були раніше приховані.
Один випадок, коли це зараз виявляється, - це addReplyTo
функція.
У Joomla 2.5 addReplyTo
був параметр масиву.
Починаючи з Joomla 3.0 ( так, ще в 2012 році ), функція JMail Joomla змінилася, щоб не обробляти масиви інакше, ніж параметри рядка. Таким чином, він спирався на базовий код PHPMailer, який, однак, також змінився і, таким чином, не зможе правильно додати відповідь-до.
PHPMailer викидає виняток за це, однак до тих пір, поки Joomla 3.5.1 ніхто не побачив цього винятку, якщо ви не включили обробку винятків вручну!
Рішення
Ви можете шукати код розширення addReplyTo
та змінювати рядки на зразок цього:
$mailer->addReplyTo(array($replyTo, $replyToName));
до цього:
if(version_compare(JVERSION, '3.0', 'ge')) {
$mailer->addReplyTo($replyTo, $replyToName);
} else {
$mailer->addReplyTo(array($replyTo, $replyToName));
}
Крім того, ви хочете додати try {} catch() {}
код за потребою для обробки винятку, що надходить від JMail / PHPMailer.
Більше інформації: