Сайт сообщества | Клуб пользователей | О проекте

Имя
Пароль
ПравилаРегистрацияСправка
Сообщения за деньПоиск

Вернуться   Клуб пользователей портальной системы RUNCMS > Опен Ресурс > Разработчикам

Ответ
 
Опции темы Опции просмотра
ZlydenGL вне форума ZlydenGL
Напильникъ - наше все

Аватар для ZlydenGL

| Цитировать Старый #1 12-20-2011, 17:55

Хозяйке на заметку, так сказать.

Некоторое время назад заметил, что если сайт подразумевает уведомление пользователей (например форумное), то достаточно велик шанс, что за какие-то "грешки" адрес рассылки будет подзабанен. При этом не только подписанты могут не получить уведомляху (что в целом пофиг), но и новые пользователи не смогут получить уведомление о регистрации (и активационную ссылку, если включен режим предварительной активации, что ОЧЕНЬ неприятно).

Лечится эта шняга ОЧЕНЬ просто. Например, если используется форум newbb_plus, то в файле post.php все строки вида
PHP код:
SetFromEmail(adminmail
заменить на
PHP код:
SetFromEmail("адрес_рассылки"
После этого, даже если "великий и могучий" мыло.вар забанит адрес рассылки, основной адрес останется незатронутым.

Вообще по-хорошему бы эту настройку вынести в админку хотя бы форума, но для конкретного проекта сойдет и такой "наколеночный" вариант

А можно пойти и от обратного: подтюнить файлы register.php и lostpass.php по тому же принципу. В этом случае письма с учетками пользователей ВСЕГДА будут идти не по основному адресу $xoopsConfig['adminmail'], и соответственно имеют ОЧЕНЬ малый шанс быть забаненными.


Не ошибается только тот, кто ничего не делает. Ковчег построил любитель. Профессионалы строили Титаник.
  Сообщения: 777 c 22.09.2008 | Репутация: 92
ZlydenGL вне форума ZlydenGL
Напильникъ - наше все

Аватар для ZlydenGL

| Цитировать Старый #2 12-20-2011, 18:14

А вот и хак для "обратного" способа (что-то меня поперло):

1. lostpass.php и register.php: строку
PHP код:
$xoopsMailer->setFromEmail($xoopsConfig['adminmail']); 
меняем на
PHP код:
$xoopsMailer->setFromEmail($xoopsConfig['regmail']); 
Причем исходная строка в каждом из файлов встречается дважды - соответственно меняем все вхождения в обоих файлах.

2. modules\system\admin\preferences\preferences.php: после строки
PHP код:
$adminmail_text = new XoopsFormText... 
добавляем строки
PHP код:
$rmail          = !empty($xoopsConfig['regmail']) ? $xoopsConfig['regmail'] : $xoopsUser->getVar("email""E");
$regmail_text = new XoopsFormText(_MD_AM_REGML"regmail"50100$rmail); 
после строки
PHP код:
$form->addElement($adminmail_text); 
добавляем строку
PHP код:
$form->addElement($regmail_text); 
после строки
PHP код:
$adminmail
добавляем строку
PHP код:
$regmail
и после строки
PHP код:
\$xoopsConfig['adminmail'] = \"".$myts->makeTboxData4PreviewInForm($adminmail)."\"; 
добавляем строки
PHP код:
// "._MD_AM_REGML."
\$xoopsConfig['regmail'] = \"".$myts->makeTboxData4PreviewInForm($regmail)."\"; 
Т.е. все, что мы сделали - склонировали переменную adminmail и ее обработку в regmail.

3. modules\system\admin\preferences\main.php: после строки
PHP код:
$adminmail
добавляем строку
PHP код:
$regmail
Опять же, клонирование в чистом виде.

4. modules\system\admin\preferences\language\нужный_я зык\preferences.php: после строки
PHP код:
define("_MD_AM_ADMINML",... 
добавляем строку
PHP код:
define("_MD_AM_REGML","Адрес отсылки регистрационной информации"); 
Это, само собой, для русского языка

Всё! Кому надо - можете взяться и оттестить, ибо писал тоже на коленке, в продакшн пущу чуть попозжа

Последний раз редактировалось ZlydenGL, 12-20-2011 в 19:52
Причина: Чуть-чуть поправил код


Не ошибается только тот, кто ничего не делает. Ковчег построил любитель. Профессионалы строили Титаник.
  Сообщения: 777 c 22.09.2008 | Репутация: 92
ZlydenGL вне форума ZlydenGL
Напильникъ - наше все

Аватар для ZlydenGL

| Цитировать Старый #3 12-20-2011, 20:29

Ну и чтоб поставить все точки над Ё - фикс для СТАНДАРТНОГО newbb_plus.

1. modules/newbb_plus/admin/forum_config.php: после строки
PHP код:
$content .= "\$newbbConfig['att_pic_max_size'] = ".intval($_POST['att_pic_max_size']).";\r\n";; 
добавляем строку
PHP код:
$content .= "\$newbbConfig['notifmail'] = '".$myts->makeTboxData4Save($_POST['notifmail'])."';\r\n"
после строки
PHP код:
$cfg_form->addElement(new FormHeadingRow(_MD_A_GENERAL_OPTS)); 
добавляем строку
PHP код:
$cfg_form->addElement(new XoopsFormText(_MD_A_NOTIFMAIL,'notifmail',50,50,$newbbConfig['notifmail'])); 
2. modules/newbb_plus/language/нужный_язык/admin.php: после строки
PHP код:
define("_MD_A_ANTIFLOOD","Задержка между сообщениями одного пользователя (сек)"); 
добавляем строку
PHP код:
define("_MD_A_NOTIFMAIL","Адрес для отправки уведомлений"); 
Это само собой для русского

3. modules/newbb_plus/post.php: все строки вида
PHP код:
$xoopsMailer->SetFromEmail($xoopsConfig['adminmail']); 
заменяем на
PHP код:
$xoopsMailer->SetFromEmail($newbbConfig['notifmail']); 
Все! Осталось только зайти в админку и указать, какой адрес нужно использовать для рассылки уведомлений с форума. В принципе это имеет сделать даже до пункта 3, чтоб какая-то часть нотифов не была отправлена с пустым обратным адресом.

На этом все!


Не ошибается только тот, кто ничего не делает. Ковчег построил любитель. Профессионалы строили Титаник.
  Сообщения: 777 c 22.09.2008 | Репутация: 92
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Рейтинг@Mail.ru Хостинг провайдер Majordomo. Powered by: vBulletin Version 3.0
Copyright ©2000-2024, Jelsoft Enterprises Ltd.
Все разделы прочитаны - Руководство форума - Архив - Вверх
Rambler's Top100
Output: 64.93 Kb. compressed to 61.62 Kb. by saving 3.31 Kb. (5.10%)
Page generated in 0.07476 seconds with 12 queries