Страница 1 из 1

Активационная ссылка в письме домен рф

СообщениеДобавлено: 04 окт 2017, 10:09
Rob13
Подскажите как сделать активной ссылку подтверждения регистрации на сайте в случае домена в зоне рф?
Много пользователей не активируют аккаунт так как не понимают, что ссылку нужно скопировать в браузер самостоятельно, кликают на нее и ничего не выходит.


Приходит письмо такого содержания:

Ваша учётная запись ещё не активна. Вы не сможете ей пользоваться, пока не перейдёте по следующей ссылке: http://сайт.рф/site/activation?key=08d635f4832ae141caa3d9de59201056

Данная ссылка в письме не кликабельна (не активна).

При внесении изменений в шаблон письма для пользователя если взять переменную {activateLink} и сделать ее ссылкой, то приходит письмо вида http://сайт.рф/site/activation?key=08d635f4832ae141caa3d9de59201056 но при открытии браузера кириллица заменяется знаками вопросов и получаем ссылку вида http://???-???????????.??/site/activation?key=08d635f4832ae141caa3d9de59201056caa3d9de59201056

Как заменить кириллицу на пуникод в переменной {activateLink} чтобы активная ссылка была рабочей http://xn--80aswg.xn--p1ai/site/activat ... de59201056 ???




Пожалуйста помогите! Версия FREE V1.16.1

Re: Активационная ссылка в письме домен рф

СообщениеДобавлено: 04 окт 2017, 12:49
Xpycm
Скачайте последнюю бесплатную версию с нашего сайта

Распакуйте архив.
Скопируйте папку protected\extensions\idna\ к себе на сайт по такому же пути.

В распакованном архиве, в файле protected\modules\notifier\components\Notifier.php найдёте строки, в которых есть IdnaConvert::checkDecode
Их все надо скопировать в ваш файл protected\modules\notifier\components\Notifier.php на сервере в те же строки по логике работы.

Например:
Код: Выделить всё
...
$body str_replace('{host}'IdnaConvert::checkDecode(Yii::app()->request->hostInfo), $body);
$body str_replace('{fullhost}'IdnaConvert::checkDecode(Yii::app()->getBaseUrl(true)), $body);
...
$body str_replace('{url}'IdnaConvert::checkDecode($url), $body);
....
$body str_replace('{'.$field.'}'IdnaConvert::checkDecode($val), $body);
... 

Re: Активационная ссылка в письме домен рф

СообщениеДобавлено: 04 окт 2017, 17:04
Rob13
Спасибо за ответ. К сожалению ничего не изменилось. На скриншоте навел курсор на ссылку

Re: Активационная ссылка в письме домен рф

СообщениеДобавлено: 04 окт 2017, 20:29
Xpycm
Такое ощущение, что вы пользуетесь какой-то почтовой программой и она не понимает что ей надо отобразить в ссылке кириллицу.

Попробуйте открыть письмо в другой почтовой программе, а также в браузере (например: зарегистрировать нового пользователя с почтой @gmail и посмотреть письмо на gmail.com в браузере)


Ещё можно попробовать следующий вариант:

Файл protected\modules\notifier\components\Notifier.php

В методе private function _processEvent($rule, $model, $to, $toModerators = false)

в самый верх этого метода (скорее всего до строки $user = $this->getFromParam('user'); )
вставьте:
Код: Выделить всё
$idna = new IdnaConvert(); 

и замените:
Код: Выделить всё
IdnaConvert::checkDecode

на:
Код: Выделить всё
$idna->encode


Этот код должен вместо кириллического домена отобразит Punycode (пуникод) и вместо пгт-яблоновский.рф будет xn----btbdb2agfgsjbf8ag0r.xn--p1ai

Re: Активационная ссылка в письме домен рф

СообщениеДобавлено: 04 окт 2017, 23:47
Rob13
Спасибо за помощь. Проблема оказалась в почтовом клиенте TheBat. В браузере как почта яндекс, так google адекватно открывали ссылку без конвертации в пуникод. Но многие полагаю пользуются данной программой, поэтому внес изменения в файл Notifier.php . Некрасиво, зато практично )

Re: Активационная ссылка в письме домен рф

СообщениеДобавлено: 05 окт 2017, 12:54
Xpycm
Вам спасибо, что написали на форум.
Возможно, кому-то в будущем также поможет это решение