Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Тематические » Системы управления сайтами » Система автоматической рассылки новостей сайта

Модерирует : Antuan

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3

Открыть новую тему     Написать ответ в эту тему

FatCat



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Обещал - придется делать. По просьбе Antuan'а кратко расскажу как сделать у себя на сайте регулярную автоматическую рассылку новостей подписчикам.
 
Почтовая рассылка вещь полезная. Мое мнение, основанное, на 3х годичном опыте ведения сайта - она все же убирает посетителей в оффлайн. Ее будут читать те, у кого, как правило, нет регулярного доступа в Интернет, а есть только почта (например на работе) и будут ей очень рады.  Для нашего сайта рассылка - только один из дополнительных сервисов, причем далеко не самый важный. Но хочется чтобы пользователям было приятно, верно?
Рассылка, понятное дело, имеет смысл только тогда, когда есть что рассылать, т.е. новости появляются: а) регулярно, b) интересные.
 
Есть разные способы:
 
- Первый варинт. В самом простейшем случае берется текст новостей, копируется в почтовый клиент и высылается всем подписчикам с помощью собственного мыла. Фуууу.....Это было давно, когда я был еще маленький, глупый и не такой ленивый :)
 
- Второй вариант. Чуть более сложный вариант - генерить текст новостей в файл, скачивать его к себе и рассылать. Как вариант - использовать Sendmail сервера и слать по списку с его помощью. Можно, впрочем поставить и скрипт и организовать что-то типа варианта 6, о котором я буду писать ниже, но зачем изобретать велосипед?
 
- третий вариант, которым я пользовался когда стал "чуть постарше" - служба рассылки subscribe.ru (да, да - это реклама :)
Минусы - их реклама в вашей рассылке. Но баннеры терпим у себя на сайте (если только ты не крутой оригинал), переживем и это. Плюсы: а) послал и забыл, никаких возвратов с закрытах e-mail'ов, переполненных ящиков, автоответчиков и т.п.; б) собственная база подписчиков. Например, у меня было 400, после регистарции рассылки в subscribe.ru набежало еще 1600 от них.
Как это делается? Берем вот эту форму - http://win.subscribe.ru/author/issue/ и заполняем все поля (разумеется когда вы завели рассылку, знаете ее код и пароль), жмем кнопку - все уходит подписчикам (не сразу, а по мере того как освободится очередь на сервере, но все же достаточно быстро - несколько часов).
 
- четвертый вариант. Разумеется, поскольку со временем я стал лениться все больше и больше, такая схема меня стала тоже доставать. Это ж нужно помнить в какие дни заходить, потом верстать туда html-версию и т.п. В итоге - я стал пропускать "сеансы", иногда на день два.
НО! Оказывается у subscribe.ru есть еще одна полезная фича. Переходим к следующему пункту.
 
- Пятый вариант. У subscribe.ru есть "робот", которой по вашей команде, поданной письмом, заходит по указанному адресу и забирает оттуда подготовленный вами файл, вставляя его в текст рассылки. Понятно что этот файл должен содержать новостную ленту сайта, подготовленную в формате для рассылки (ссылки заменены на абсолютные, переформатирование и т.п.
 
Письмо шлется на адрес issue@subscribe.ru и должно содержать, как минимум, вот такую последовательность кодов в body:
 

Код:
 
@@NAME@@ games.rolemancer  // Комментарий - это код нашей рассылки. У кажной рассылки свой код
@@PASSWD@@ *******  // - тут нужно ввести ваш пароль рассылки, иначе робот вас пошлет подальше
@@CHARSET@@ кошка  
@@AUTOTEXT@@
@@BEGINHTML@@
[SUBSCRIBE http://www.rolemancer.ru/news/subscribe.html charset=w]  //А это страничка, содержащая новости сайта, в win1251
@@ENDHTML@@
 

 
Круто? Знай себе раз в n дней отправляй письмо на subscribe.ru и все. Разумеется, надо сделать так, чтобы прилагаемый файл содержал новости за тот же интервал дней.
 
Угадаете что было дальше? Я стал забывать слать такие письма :)
 
Переходим к пункту шестому, описывающему как дела обстоят у нас сейчас.
 
- Шестой вариант. А что если это письмо буду слать не я, а мой сервер? Так и сделали. Теперь письмо с управляющими кодами шлется через Cron сервера.
 
Команда, прописанная в crontab звучит так:
 

Код:
 
0 3 */3 * * root cat /home/№№№№ | mail  issue@subscribe.ru
 

 
Под №№№№ подразумевается полный путь к файлу, содержащему текст приведенного выше письма. Я этот путь не указываю в целях секретности :) Если вы знакомы с настройками crontab, то увидите что шлется оно в 3 часа ночи каждые 3 дня.
 
В качестве финального штриха мы генерим в Нюке файл новостей по адресу http://www.rolemancer.ru/news/subscribe.html , содержащий новости за последние 3 дня.
 
Вот код этого файла (вставляется в mainfile.php, можно сразу после того места где генерится файл ultramode.txt:
 

Код:
 
/*******************************Subscribe************************************/
 
    $subscribe = "news/subscribe.html";
    $file4 = fopen("$subscribe", "w");
    $day=3;
fwrite($file4, "<html><head><META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=windows-1251\"><link rel=stylesheet type=text/css href=http://www.rolemancer.ru/themes/DarkPastor/main.css></head><body>");
    $sub=mysql_query("select sid, aid, title, time, hometext, topic, informant from stories where (TO_DAYS(NOW()) - TO_DAYS(time)) <= $day order by time DESC");
    while(list($sid, $aid, $title, $time, $hometext, $topic, $informant) = mysql_fetch_row($sub)) {
$sub2=mysql_query("select topictext, topicimage from topics where topicid=$topic");
 
list($topictext, $topicimage) = mysql_fetch_row($sub2);
    $hometext = nl2br($hometext);
$hometext = ereg_replace("<br>\n<p>","<p>",$hometext);
 
 
$content = "<p><b><a href=http://www.rolemancer.ru/index.php#rolemancer$sid>$title</a></b><br><font class=l>$hometext<p><font class=p>$time&nbsp;|&nbsp;<b>Раздел:</b>&nbsp;<a class=m href=http://www.rolemancer.ru/search.php?query=&topic=$topic>$topictext</a>&nbsp;|&nbsp;<b>Автор:</b>&nbsp;$informant&nbsp;|&nbsp;<a class=m href=http://www.rolemancer.ru/article.php?sid=$sid&mode=&order=0&thold=0>Прокомментировать</a></font><p></center><hr>";
fwrite($file4, $content);
    }
fwrite($file4, "</body></html>");
 
    fclose($file4);
/************************************************************************/
 
 

 
Код немного нестандартный, т.к. рассчитан на нашу, переделанную версию Nuke, но я думаю вы сможете сделать такую для себя по образцу того, как генерится ваш ultramode.txt
 
Если у вас нет доступа к crontab сервера - придется ограничиться пунктом 5 или изобрести альтернативный способ регулярной отправки письма.
 
По возможности постараюсь ответить на вопросы.
 
 
 
 


----------
Портал Rolemancer
http://www.rolemancer.ru

Всего записей: 346 | Зарегистр. 10-07-2001 | Отправлено: 22:06 04-10-2001
Antuan



moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
FatCat

Цитата:
По просьбе Antuan'а кратко расскажу как сделать у себя на сайте регулярную автоматическую рассылку новостей подписчикам.  

Спасибо!!
Будем изучать текст...


----------
EuRuChess

Всего записей: 10669 | Зарегистр. 10-04-2001 | Отправлено: 22:16 04-10-2001
NAS

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Прикол от Subscribe
 
"Категорически рекомендуется НЕ использовать отправку рассылок
через e-mail"

Всего записей: 34 | Зарегистр. 23-09-2001 | Отправлено: 23:09 04-10-2001
Shelter



Shelter™
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Еще одно спасибо!
ОЧЕНЬ полезная информация. Будем пробовать!
Удачи!

----------
Кто сверяет свое поведение с общественным мнением, тот не уверен в своих силах (с) /Мармонтель/

Всего записей: 17948 | Зарегистр. 21-09-2001 | Отправлено: 00:58 05-10-2001
FatCat



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
NAS

Цитата:
"Категорически рекомендуется НЕ использовать отправку рассылок
через e-mail"

 
Имеется ввиду высылка текстов рассылки через e-mail на subscribe.ru, я же подаю команду забрать файл. Если сайт недоступен в этот момент - робот рассылку не сделает и пошлет мне письмо-уведомление. Пока такого не было :)
 
Единственно, рекомендую в письме обязательно явно прописывать кодировку

Код:
SUBSCRIBE http://www.rolemancer.ru/news/subscribe.html  charset=w  

Потому как если ДАЖЕ у вас в теле файла прописано  
HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=windows-1251\"
то все равно subscribe попытаестя забрать его в KOI-8, я с этим сперва помучался. Правда, есть подозрение, что это легко лечится, если в Апаче включена автоперекодировка win1251 <--> Koi-8, но она у нас отрублена специально.

Всего записей: 346 | Зарегистр. 10-07-2001 | Отправлено: 16:34 05-10-2001
FatCat



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
NAS

Цитата:
"Категорически рекомендуется НЕ использовать отправку рассылок
через e-mail"

Ты верен что правильно понял?
Имеется ввиду высылка текстов рассылки через e-mail на subscribe.ru, я же просто подаю роботу команду забрать файл. Если сайт недоступен в этот момент - робот рассылку не сделает и пошлет мне письмо-уведомление. Пока такого не было :)
 
Единственно, рекомендую в письме обязательно явно прописывать кодировку

Код:
SUBSCRIBE http://www.rolemancer.ru/news/subscribe.html  charset=w  

Потому как если ДАЖЕ у вас в теле файла прописано  
HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=windows-1251\"
то все равно subscribe попытаестя забрать его в KOI-8, я с этим сперва помучался. Правда, есть подозрение, что это легко лечится, если в Апаче включена автоперекодировка win1251 <--> Koi-8, но она у нас отрублена специально.

Всего записей: 346 | Зарегистр. 10-07-2001 | Отправлено: 16:43 05-10-2001
christ4you

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
FatCat
 
Поместил я себе в mailfile.php твой отрезок кода, но ничего кроме пустого HTML он не пишет. Привожу измененный под мой Нюк код:
 

Код:
 
function subscribe() {
    $subscribe = "news/subscribe.html";  
    $file4 = fopen("$subscribe", "w");  
    $day=7;  
fwrite($file4, "<html><head><META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=windows-1251\"><link rel=stylesheet type=text/css href=http://christ4you.org/themes/K-Bix-iceberg/style/style.css></head><body>");  
    $sub=mysql_query("select sid, aid, title, time, hometext, topic, informant from stories where (TO_DAYS(NOW()) - TO_DAYS(time)) <= $day order by time DESC");  
    while(list($sid, $aid, $title, $time, $hometext, $topic, $informant) = mysql_fetch_row($sub)) {  
$sub2=mysql_query("select topictext, topicimage from topics where topicid=$topic");  
 
list($topictext, $topicimage) = mysql_fetch_row($sub2);  
    $hometext = nl2br($hometext);  
$hometext = ereg_replace("<br>\n<p>","<p>",$hometext);  
$content = "<p><b><a href=http://christ4you.org/article.php?sid=$sid>$title</a></b><br><font class=l>$hometext<p><font class=p>$time&nbsp;|&nbsp;<b>Раздел:</b>&nbsp;<a class=m href=http://www.christ4you.org/search.php?query=&topic=$topic>$topictext</a>&nbsp;|&nbsp;<b>Автор:</b>&nbsp;$informant&nbsp;|&nbsp;<a class=m href=http://www.christ4you.org/article.php?sid=$sid&mode=&order=0&thold=0>Прокомментировать</a></font><p></center><hr>";  
fwrite($file4, $content);  
    }  
fwrite($file4, "</body></html>");  
 
    fclose($file4);  
   }
 

 
 
А вот HTML, который он создает:
 

Код:
 
<html><head><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251"><link rel=stylesheet type=text/css href=http://christ4you.org/themes/K-Bix-iceberg/style/style.css></head><body></body></html>
 

Пожалуйста, объясни, как твоя функция генерирует HTML файл, - по дням или каждый раз, когда загружается mainfile.php, или когда постятся новые новости?..
 
А может быть я сделал что-то неправильное?
 
 
 
Antuan        Shelter          NAS
 
Ребята, вы уже пробовали адаптировать код от FatCat? Если да, то поделитесь...

Всего записей: 37 | Зарегистр. 24-09-2001 | Отправлено: 17:49 05-10-2001
Uniq



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Я не (Antuan        Shelter          NAS ), но  отвечу. У меня все работает. Есть у меня на сабскрайбе рассылка на 3000 подписчиков, так вот очень запарно было вручную делать хтмл файл, а потом вводить рассылку. Кроном я пока не занимался, но генерация хтмл-файла по коду Фэткэта идет на ура. Вообще, по опытц предыдущего общения с Фэткэтом знаю, что все что он здесь выкладывает, работает.

Всего записей: 128 | Зарегистр. 30-07-2001 | Отправлено: 19:22 05-10-2001
christ4you

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Uniq
 
Мог бы ты публикнуть переделанный модуль генеражки? Плииииз!

Всего записей: 37 | Зарегистр. 24-09-2001 | Отправлено: 19:51 05-10-2001
batva



crazy administrator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
christ4you

Цитата:
Пожалуйста, объясни, как твоя функция генерирует HTML файл, - по дням или каждый раз, когда загружается mainfile.php, или когда постятся новые новости?..  

 
страница генерится когда вызывается sub ultramod
ой сорри функция ультрамод, это же не перл лол.
ну так вот эта функция вызывается при постинге статей.
Только в админцентре ультрамод должен быть включен.
 

Цитата:
Поместил я себе в mailfile.php твой отрезок кода, но ничего кроме пустого HTML он не пишет. Привожу измененный под мой Нюк код:  

 
судя по тому что он тебе все таки хедер и футер генерит, значит функция вызывается но просто не отрабатывается цикл

Код:
 
while(list($sid, $aid, $title, $time, $hometext, $topic, $informant) = mysql_fetch_row($sub)) { ***** }
 

 
ХЗ почему, я не пробовал но судя по коду там все чисто, хотя погоди, в новых нюках там же префикс есть, точно замени тогда  

Код:
 
informant from stories  
 

 
на
Код:
 
informant from $prefix"._stories."
 

 
аналогично и чуть ниже "select topictext, topicimage from $prefix"._topics." where
 
И все должно работать, странно вообще то, почему у тебя ошибку не выдало, а сгенерило хоть и пустой файл. лол
 

Всего записей: 12593 | Зарегистр. 07-01-2001 | Отправлено: 08:27 06-10-2001
Pilotoved



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
 качестве финального штриха мы генерим в Нюке файл новостей по адресу http://www.rolemancer.ru/news/subscribe.html  , содержащий новости за последние 3 дня.  

 
Не знаю, что вы там генерируете, но у меня IE 5.0 оба раз тихо умер, когда я попытался посмотреть эту страницу
 
С уважением,
Pilotoved

Всего записей: 38 | Зарегистр. 12-09-2001 | Отправлено: 14:03 07-10-2001 | Исправлено: Pilotoved, 14:06 07-10-2001
NAS

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Не знаю, что вы там генерируете, но у меня IE 5.0 оба раз тихо умер, когда я попытался посмотреть эту страницу  

 
Пора винды переставлять. Все прекрасно грузится, даже на IE 3.

Всего записей: 34 | Зарегистр. 23-09-2001 | Отправлено: 15:29 07-10-2001
FatCat



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Извиняюсь, только вернулся из командировки :)
 
Насчет "умирает" очень даже странно - там "голый" html для рассылки, таблицы и никаких JS.

----------
Портал Rolemancer
http://www.rolemancer.ru

Всего записей: 346 | Зарегистр. 10-07-2001 | Отправлено: 12:32 09-10-2001
Uniq



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
IMHO, немного нерационально пихать этот код в main. Я вставил в admin.php. Файл тогда генерится только тогда, когда я постю новости, а это как минимум в 100 раз уменьшает количество обращений к базе и запись-перезапись файла :)
А, ФэтКэт? ;)

Всего записей: 128 | Зарегистр. 30-07-2001 | Отправлено: 15:08 11-10-2001
batva



crazy administrator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Uniq

Цитата:
IMHO, немного нерационально пихать этот код в main. Я вставил в admin.php. Файл тогда генерится только тогда, когда я постю новости, а это как минимум в 100 раз уменьшает количество обращений к базе и запись-перезапись файла  
А, ФэтКэт?

нет ты не прав.
Код хоть и находится в маин, но вызывается он ведь только при постинге статей. Вот тут первый абзац перечитай.
http://forum.ru-board.com/topic.cgi?forum=28&topic=0270#10
 
И просто удобнее программить, все функции держать в одном или нескольких файлах.
А пихать их в скрипты правило дурного тона.
Ибо сколько тебе раз придется пихать?
Ведь и при постинге генерить надо, и при редактировании, и при автопостинге и еще пару раз. Посчитай из скольких мест вызывается sub ultramod

Всего записей: 12593 | Зарегистр. 07-01-2001 | Отправлено: 15:17 11-10-2001
Uniq



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Ясно. Невнимательно прочитал.

Всего записей: 128 | Зарегистр. 30-07-2001 | Отправлено: 15:25 11-10-2001
Uniq



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Подскажите, как сделать выборку из таблицы по нескольким критериям?
У ФэтКэта:
 
$sub=mysql_query("select sid, aid, title, time, hometext, topic, informant from stories where (TO_DAYS(NOW()) - TO_DAYS(time)) <= $day order by time DESC");
 
Мне же нужно, чтобы выборка бралась не из всех новостей, а только определенного топика. При этом надо сохранить выборку из промежутка времени (TO_DAYS(NOW()) - TO_DAYS(time)) <= $day

Всего записей: 128 | Зарегистр. 30-07-2001 | Отправлено: 18:21 11-10-2001
Uniq



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Ответ найден. Вопрос был из серии RTFM :)))

Всего записей: 128 | Зарегистр. 30-07-2001 | Отправлено: 18:24 11-10-2001
Uniq



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
http://www.rikatv.kz/subscribe.html
 
Хак Фэткэта в действии. :)

Всего записей: 128 | Зарегистр. 30-07-2001 | Отправлено: 18:29 11-10-2001
FatCat



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Uniq
Суперски! Теперь настроишь subscribe, cron и забудешь про рассылку навсегда
 
Кстати, рекомендую css настроить прямо на subscribe.ru, в профиле рассылки, а тут использовать классы из нее.

Всего записей: 346 | Зарегистр. 10-07-2001 | Отправлено: 20:31 12-10-2001 | Исправлено: FatCat, 20:32 12-10-2001
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3

Компьютерный форум Ru.Board » Тематические » Системы управления сайтами » Система автоматической рассылки новостей сайта


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru