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

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

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

10 голосов | спросил mavrosxristoforos 7 PMpThu, 07 Apr 2016 18:21:54 +030021Thursday 2016, 18:21:54

2 ответа


17

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

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

Если вы на 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 (массив ($ replyTo, $ replyToName));

:

if (version_compare (JVERSION, '3.0', 'ge')) {
  $ mailer-> addReplyTo ($ replyTo, $ replyToName);
} else {
  $ mailer-> addReplyTo (массив ($ replyTo, $ replyToName));
}

Кроме того, вам нужно добавить код try {} catch () {}, чтобы обрабатывать Исключение, исходящее от JMail /PHPMailer.

Дополнительная информация:

Обсуждение вопроса о Github

Релевантная тема на форумах Joomla

ответил mavrosxristoforos 7 PMpThu, 07 Apr 2016 18:21:54 +030021Thursday 2016, 18:21:54
3

Я также получил эту ошибку, когда переменная $ replyTo была пустой и ей пришлось использовать

if (! empty ($ replyTo)) {
  $ mailer-> addReplyTo ($ replyTo, $ replyToName);
}
ответил GreyHead 8 PMpFri, 08 Apr 2016 16:48:11 +030048Friday 2016, 16:48:11

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132