Исправьте ошибку «Неверный адрес» после обновления до Joomla 3.5.1


10

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

Как я могу это исправить?

Ответы:


16

Ответ для пользователей:

Если вы получаете эту ошибку, потому что вы используете какое-то расширение, которое отправляет электронные письма, пожалуйста, посетите страницу разработчика и сначала убедитесь, что вы используете последнюю версию .

Если вы на 100% уверены, что используете последнюю версию, но все еще получаете эту ошибку, вам следует связаться с разработчиком и спросить их об этой ошибке. Отправив им ссылку на эту страницу, может помочь разработчику исправить эту ошибку .

Если вы считаете себя достаточно опытным с PHP, вы можете попробовать исправить код самостоятельно, используя «ответ для разработчиков» ниже.

Обратите внимание, что это будет не постоянное решение, а всего лишь «патч», пока разработчик не выпустит новую версию.

Ответ для разработчиков:

Joomla 3.5.1 по умолчанию включает исключения PHPMailer. Таким образом, ошибки, которые были ранее скрыты, обнаруживаются.

Один из случаев, когда это видно сейчас - это addReplyToфункция.

В Joomla 2.5 addReplyToбыл параметр массива.

Начиная с Joomla 3.0 ( да, еще в 2012 году ) функция JMail в Joomla была изменена, чтобы не обрабатывать массивы иначе, чем строковые параметры. Таким образом, он опирался на базовый код PHPMailer, который, однако, также изменился и, следовательно, не может правильно добавить Reply-To.

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.