Учим joomla дружить с кириллической почтой. Проблемы с почтой в джумле №2

Добрый день, уважаемые читатели и читательницы takprostotak.ru. В этот чудный осенний день пришла мрачная весть с полей веб-разработок, люди с мест жалуются, говорят joomla отказывается отправлять почту от отправителя вида "fxg@почта.рф", короче говоря неадекватно ведет себя с кириллицей в адресе отправителя. Я уже как-то поднимал тему про проблемы с почтой джумле и думал, что на этом можно поставить точку, но не тут-то было, кириллические домены подкидывают сюрпризы периодически, вот и джумла споткнулась о них.

Собственно в статье пойдет речь о том, как заставить работать joomla с кириллическими адресами почты.

head_postal1

Решаем проблему кириллической почты в joomla 1.6-2.5


Суть проблемы заключается в том, что в обратной связи joomla стоит валидатор на яваскрипте, этот валидатор проверяет правильность заполнения полей формы в соответствии с неким шаблоном.

в joomla 2.5 валидатор располагается по адресу \media\system\js\validate.js

Ищите в файле кусок кода ("email") за ним следом будет регулярное выражение (шаблон), который нужно поправить. Шаблоны заданы в самом валидаторе. Шаблон для email отправителя следующий

regex=/^[a-zA-Z0-9._-]+(\+[a-zA-Z0-9._-]+)*@([a-zA-Z0-9.-]+\.)+[a-zA-Z0-9.-]{2,9}$/;

Это регулярное выражение, согласно которому будет проверено поле email в форме, тут нужно серьезное вдохновение, чтобы понять, что к чему), но кое что все, же понятно.

[a-zA-Z0-9._-] - указываем диапазон маленьких и больших латинских букв, цифры, точки, "_" и "-". Само выражение разбивается на 3 части то что до знака "@", между "@" и "." и то что после ".". Все что нам нужно это добавить наши родные буквы в это регулярное выражение.

Диапазон русских букв в регулярных выражениях задается так: а-яёА-ЯЁ. Букву ё рекомендуют добавлять отдельно знающие люди, я так и сделал, лишним не будет. Вот что получилось.

regex=/^[a-zA-Zа-яёА-ЯЁ0-9._-]+(\+[a-zA-Zа-яёА-ЯЁ0-9._-]+)*@([a-zA-Zа-яёА-ЯЁ0-9.-]+\.)+[a-zA-Zа-яёА-ЯЁ0-9.-]{2,9}$/;

[обновление от 23.11.2014]
По коментарию №13 - Кириллический url адрес преобразуется в пуникод. ".рф" превращается в ".xn--p1ai", поэтому ограничение в 4 символа не достаточно, нужно в конце регулярки указать {2,9}

[обновление от 24.11.2014]
По коментарию №15 - ничего другого не остается, кроме как поменять тип поля. В файле \administrator\components\com_config\models\forms\application.xml строка примерно 259 (около name="mailfrom") меняем поле type="email" на type="text".

далее заменяем оригинальное регулярное выражение нашим и вуаля!
Для тех, кто мало что понял, куда и что вставлять прикладываю файлик валидатора, просто замените у себя на сайте.


На закуску видюшка на тему даунхила



Похожие статьи:
↑ Наверх ↑
  • Комментарии
  • Игорь (19/10/2012 - 14:08):

    у меня на 2.7 не получается
    в чем еще может быть дело?

  • TakProstoTak.ru (22/10/2012 - 12:37):

    Вы просто заменили файл validate.js? Обновите кэш, для этого нужно F5 нажать в браузере. дело в том, что браузеры кэшируют файлы яваскриптов. Нужно либо чистить кэш для сайта либо принудительно загружать страницу (F5).

  • Станислав (24/10/2012 - 23:04):

    joomla 2.5 + virtuemart 2. Имя домена проходит проверку, а вот РФ нет.
    Например, info@мойдомен.рф – выделяется красным, а info@мойдомен.ru нормально сохраняется.

  • TakProstoTak.ru (25/10/2012 - 7:37):

    Станислав: Похоже на то, что не верно регулярное выражение составили. Выглядеть должно вот так regex=/^[a-zA-Zа-яёА-ЯЁ0-9._-]+(\+[a-zA-Zа-яёА-ЯЁ0-9._-]+)*@([a-zA-Zа-яёА-ЯЁ0-9.-]+\.)+[a-zA-Zа-яёА-ЯЁ0-9.-]{2,4}$/;. киньте ваше регулярное выр-е на проверку…

  • Станислав (25/10/2012 - 10:48):

    Вот оно:
    regex=/^[a-zA-Zа-яёА-ЯЁ0-9._-]+(\+[a-zA-Zа-яёА-ЯЁ0-9._-]+)*@([a-zA-Zа-яёА-ЯЁ0-9.-]+\.)+[a-zA-Zа-яёА-ЯЁ0-9.-]{2,4}$/
    Но его скопировал, так что должно совпадать с Вашим.
    Пробовал F5 и в разных браузерах заходить. Результат один: Недопустимое поле: E-mail сайта

  • TakProstoTak.ru (25/10/2012 - 11:02):

    Станислав: У вас письма из обратной связи не ходят или из Virtuemart? Дело в том, что мой вариант работает для обратной связи joomla. Кинте ссылочку на форму вашу.

  • 000 (21/10/2013 - 14:02):

    The Bat! 6.0 – теперь адреса электронной почты можно писать русскими буквами!

    http://ritlabs.com/ru/products/thebat/news/index.php?ELEMENT_ID=4738

  • Артур (23/12/2013 - 17:26):

    действительно не помогает(
    Joomla! 2.5.16

  • Аркадий (07/01/2014 - 3:46):

    Спасибо, оч. помогло на джумле 2.517,PHP Version 5.3.28, только ф5 не помогло))) подправил в другом браузере, а залил файлик через Тотал командер для ускорения процесса

  • Аркадий (07/01/2014 - 18:45):

    …правда теперь тот же трабл с почтой в настройках учетки пользователя администратора. Хотел переключить редактор со штатного на JCE и там тоже втух с почтой, пришлось другую вписывать…

  • Сергей (30/04/2014 - 19:46):

    Здравствуйте!Подскажите пожалуйста,если знаете.Как сделать чтобы можно было добавить емейл сайта и емайл админа,таким видом mail@домен.рф.

  • TakProstoTak.ru (06/05/2014 - 10:04):

    @Сергей, #11:

    Как сделать чтобы можно было добавить емейл сайта и емайл админа,таким видом mail@домен.рф.

    Конвертируйте почту в пуникод используя, например сервис http://wwhois.ru/punycode.php. e-mail адреса в формате пуникода джумла должна кушать.

  • Серёга (22/11/2014 - 8:18):

    Файлик изменил который указан, но всё равно не даёт вписать мыло на русском – ругается красным т.е. не даёт сохранить, я и кэш везде чистил и в браузере, и в самой joomla, и в др. браузере пытался всё тщетно, я уж и “ё” буковки убрал из файла, думал может из-за этого, но нет всё так же, пытался даже в пуникоде домен писать не помогло, и ваш файл пробовал залить без результатно… Как быть??? У меня joomla 2.5.27 VirtueMart 2.6.12.2 Для наглядности посылаю скрины http://вэбсервис.рф/22-11-2014 10-11-02.jpg http://вэбсервис.рф/22-11-2014 10-16-17.jpg

  • TakProstoTak.ru (23/11/2014 - 7:48):

    @Серёга, #13: Поправил регулярку (смотрите по тексту обновление), кириллические адреса почты выглядят страшно, рекомендую перейти на латиницу.

  • Серёга (23/11/2014 - 21:47):

    @TakProstoTak.ru, #14: Вписать в поле система мне дала, поле не покраснело, но при сохранении пишет: “Недопустимое поле: E-mail сайта” вот скрин: http://вэбсервис.рф/23-11-2014_23-42-43.jpg где-то может ещё что надо подправить?

  • TakProstoTak.ru (24/11/2014 - 9:12):

    @Серёга, #15: Кажется победили. Смотри очередное обновление в статье.

Прокомментировать

Подписаться, не комментируя

Видеоуроки для вебмастеров
  • Рубрики
  • Случайные

Идеальный хостинг