Виправте помилку "Недійсна адреса" після оновлення до Joomla 3.5.1


10

Після оновлення до Joomla 3.5.1 я отримую Invalid Addressпомилку в деяких своїх розширеннях, які використовують PHPMailer (система Joomla Mailing).

Як я можу це виправити?

Відповіді:


16

Відповідь для користувачів:

Якщо ви отримуєте цю помилку через те, що ви використовуєте розширення, яке надсилає електронні листи, відвідайте сторінку розробника та спочатку переконайтеся, що ви використовуєте останню версію .

Якщо ви на 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.

Більше інформації:

Обговорення питання на Github

Відповідна тема на форумах Joomla


1
Приємна знахідка. Я бажаю Joomla умови сторінок , як це для їх оновлення
Лоддер

2
Відповідно до редагування, зробленого hbit, це проблема, починаючи з Joomla 3.0. Однак можу підтвердити, що до Joomla 3.5 ця проблема не виникає з будь-якою формою з використанням старого коду.
mavrosxristoforos

3

Я також отримав цю помилку, коли змінна $ replyTo була порожньою і її довелося використовувати

if ( !empty($replyTo) ) {
  $mailer->addReplyTo($replyTo, $replyToName);
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.