Версия 1.9 Недочет при массовой рассылке.

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО

При массовой рассылке Личных сообщений отправляется всего около 130 сообщений.

#16 27 ноября 2011 в 12:20
надо бы использовать еще и скрытую копию, очередь сообщений — не больше 50 за один проход. ведение лога и возможность рестарта при ошибке с последнего удачного id
#17 28 ноября 2011 в 13:32
Временное решение. Сделал на скорую руку как компонент.
Создайте папку ../components/emailtouser.
Создайте в папке emailtouser файл index.html и оставьте его пустым.
Создайте в папке emailtouser файл frontend.php и добавьте в него следующий код:
  1. <?php
  2. if(!defined('VALID_CMS')) { die('ACCESS DENIED'); }
  3.  
  4. if ($_SESSION['user']['id'] == "1")
  5. {
  6. $inCore = cmsCore::getInstance();
  7. $inDB = cmsDatabase::getInstance();
  8. $inPage = cmsPage::getInstance();
  9. $inUser = cmsUser::getInstance();
  10.  
  11. $heading = "Отправка сообщений зарегистрированным пользователям";
  12. $inPage->setTitle('Отправка сообщений зарегистрированным пользователям');
  13.  
  14. require('includes/config.inc.php');
  15. $count_users = 50;
  16.  
  17. $messageforusers = $_POST['messagetouser'];
  18. if (!$_POST['sender_ok']) {
  19. $_SESSION['count'] = 0;
  20. unset($_SESSION['count']);
  21. ?>
  22. Сообщение для зарегистрированных пользователей:<br />
  23. <form name="messagetouser" action="/emailtouser" method="post">
  24. <textarea name="messagetouser" rows=5 cols="90%" wrap="off"></textarea>
  25. <input name="count" type="hidden" value="0">
  26. <br /><input type="submit" name="sender_ok" value="Начать рассылку">
  27. </form>
  28. <?
  29. } else {
  30. $heading = "Отправка сообщений пользователям на email";
  31. $inPage->setTitle('Отправка сообщений пользователям на email');
  32.  
  33. $_SESSION['count'] = $_SESSION['count'] + $_POST['count'];
  34. $count = $_SESSION['count'];
  35. $sql = "SELECT id, nickname, email FROM cms_users ORDER BY id DESC LIMIT ".$count.", ".$count_users."";
  36. $result = mysql_query($sql);
  37. $num_rows = mysql_num_rows($result);
  38. $senddate = date("Y-m-d H:i:s");
  39. while ($row = mysql_fetch_row($result)) {
  40. $id = $row['0'];
  41. $nickname = $row['1'];
  42. $email = $row['2'];
  43.  
  44. $query = mysql_query("INSERT INTO cms_user_msg
  45. (`to_id`, `from_id`, `senddate`, `is_new`, `message`, `to_del`, `from_del`) VALUES ('".$id."', '-2', '".$senddate."', 1, '".$messageforusers."', 0, 0)");
  46.  
  47.  
  48. $subject = 'У вас новое сообщение на сайте '.$_CFG['sitename'].'';
  49. $message = 'На сайте '.$_CFG['sitename'].' Вам поступило новое личное сообщение. Чтобы прочитать его, перейдите по ссылке http://'.$_SERVER['HTTP_HOST'].'/users/'.$id.'/messages.html';
  50. $headers = 'MIME-Version: 1.0' . "\r\n";
  51. $headers .= 'Content-type: text/html; charset=windows-1251' . "\r\n";
  52. $headers .= 'From: '.$_CFG['sitemail'].'';
  53. mail($email, $subject, $message, $headers);
  54.  
  55. echo "".$id.", ".$nickname.", ".$email."<br />";
  56. if ($id == "1") break;
  57. }
  58.  
  59. if ($id == "1") {
  60. unset($_SESSION['count']);
  61. echo "Рассылка завершена";
  62. } else {
  63. $a = $count + $count_users;
  64. echo "Отправлено <b>".$a."</b> сообщений и писем";
  65. ?>
  66. <form name="emailtousers" action="/emailtouser" method="post">
  67. <textarea name="messagetouser" rows=5 cols="90%" wrap="off"><? echo $messageforusers; ?></textarea>
  68. <input name="count" type="hidden" value=<? echo $count_users; ?>>
  69. <br /><input type="submit" name="sender_ok" value="Отправить еще">
  70. </form>
  71. <?
  72. }
  73. }
  74.  
  75. } else {
  76. echo "Нефиг тут делать!";
  77. }
  78. ?>
В 15 строке — количество отправляемых сообщений за один раз.
Если версия InstantCMS 1.7 и ниже, нужно изменить строку 45 на эту
  1. (`to_id`, `from_id`, `senddate`, `is_new`, `message`) VALUES ('".$id."', '-2', '".$senddate."', 1, '".$messageforusers."')");
P.S. Скрипт подразумевает, что у администратора id = 1
#18 28 ноября 2011 в 15:16
в результате работы скрипта сообщения на мыло будут отправлены всем юзерам?
Не совсем понял. После создания доп компонента. Его же как то надо связать с отправкой собщений. Там обращение где нибудь к новому компоненту нужно ведь прописать?
#19 28 ноября 2011 в 15:26
Если вы сделали все по инструкции написанной выше, переходите по ссылке ВашСайт.ru/emailtouser
1. Вводите текст для личного сообщения.
2. Нажимаете кнопку "Начать рассылку".
3. Первая "порция" из 50 Личных сообщений и Уведомлений на email будет отправлена.
4. После этого надо будет нажать кнопку "Отправить еще".
5. Отправятся следующие 50 Личных сообщений и Уведомлений на email.
И так до тех пор, пока не дойдете до конца списка.
В результате работы скрипта сообщения на мыло будут отправлены всем пользователям.

После создания доп компонента. Его же как то надо связать с отправкой собщений. Там обращение где нибудь к новому компоненту нужно ведь прописать?

fact
Кроме вышеуказанной инструкции ничего делать не надо. Не нужно ничего "связывать" и "прописывать".
#20 28 ноября 2011 в 16:13
жесть это мне например 50 раз нажать нужно.
начинание очень хорошее. ещё бы всё это автоматизировать
#21 28 ноября 2011 в 16:19
Нажимайте на здоровье. Это лучше, чем ничего.
#22 28 ноября 2011 в 20:23

Нажимайте на здоровье. Это лучше, чем ничего.

Александр
конечно лучше, но при большом кол-ве юзеров это к сожалению не выход
#23 1 января 2012 в 18:51

Если вы сделали все по инструкции написанной выше, переходите по ссылке ВашСайт.ru/emailtouser
1. Вводите текст для личного сообщения.
2. Нажимаете кнопку "Начать рассылку".
3. Первая "порция" из 50 Личных сообщений и Уведомлений на email будет отправлена.
4. После этого надо будет нажать кнопку "Отправить еще".
5. Отправятся следующие 50 Личных сообщений и Уведомлений на email.
И так до тех пор, пока не дойдете до конца списка.
В результате работы скрипта сообщения на мыло будут отправлены всем пользователям.

Александр

Здравствуйте! Пробовал скрипт на компьютере, письма приходят но только в личку, а на почтовый ящик нет. На реальном хостинге, у меня там около 350 зарегистрированных пользователей, сообщения совсем не приходят даже в личку, при этом постоянно пишет — Отправлено 50 пользователям когда нажимаю на кнопку, и так бесконечно, дошел до — отправлено 900 пользователям, а у меня ведь столько нету… больше не стал нажимать. В чем тут может быть проблема?
#24 1 января 2012 в 23:37
AlekS, понятия не имею, почему у вас не работает.
Я перед новым годом делал рассылку своим пользователям, скрипт работает.
#25 5 января 2012 в 23:40
Приветствую всех.
Решил вклиниться в данное общение на тему рассылок. Тема очень интересная и нужная. Особенно касаемо жизни сообщества.
Как сказал один из участников общения в теме "Уведомления на mail при массовой рассылке" instantcms.ru/forum/thread8386.html

Учитывая что 90% регистрирующихся пользователей являются "спящими" и их нужно периодически тормошить — эта функция крайне необходима, потому что от нее зависит — будет ли жизнь в комьюнити.

Dark Knight
Согласен с этими словами. Сам неоднократно задумываюсь на эту тему. Из опыта работы с другими CMS, я сталкивался с реализацией рассылок на e-mail. В одних случаях просто текстовое сообщение рассылается в других более сложные компоненты.
Немного о том, что реализовано сейчас на InstantCMS.
На данный момент это выглядит так:
Иллюстрация
После чего приходит пользователю письмо, примерно такого содержания:
На сайте "Ваш любимый сайт" Вам поступило новое личное сообщение Автор: User Получено: 05/01/2012 22:07:23 Вы можете прочитать это сообщение и ответить на него, перейдя по ссылке: Ваш любимый сайт/users/1/reply28.html — PS: это письмо отправлено автоматически, отвечать на него не нужно. — С уважением, администрация сайта "Ваш любимый сайт".
Чтобы особо не заморачиваться на своих умозаключениях, я решил спросить некоторых из своих знакомых о их реакции на подобное сообщение. Замечу сразу, что это не опрос фокус группы, а просто общение с теми кто был на данные момент в аське. Но в принципе это уже наводит на некоторые размышления. А именно...
Чаще всего был ответ "проигнорирую" а в некоторых случаях "удалю акк или отключу уведомления".
В принципе понять пользователей можно. Зачем мне обращать внимание на уведомление о том, что кто-то мне прислал сообщение. "Кто-то" и подождать может. А вот если такие сообщения часто будут приходить, то на самом деле уж лучше отключить. А если и отключение не помогает, то на самом деле удалить аккаунт и все. Лично я так бы и поступил.
Отсюда у меня напрашивается вывод о том, что на данный момент массовая рассылка не реализована. Реализовано рассылка уведомлений на e-mail о полученных сообщениях на сайте. А это все таки несколько другое получается.
Уважаемые разработчики не примите мое сообщение за наезд, я все таки сам заинтересован в развитии данной CMS. Поэтому и решил высказаться на эту тему. Тем более перелопатив форум поиском по этой теме я прочитал мнения и предложения многих по этому поводу. А эту тему для ответа выбрал именно потому, что все таки на самом деле недочет есть. Недочет причем больше не в техническом решении, а терминологии. Поэтому кстати и возникает недоумевание у некоторых в том числе и у меня, по поводу рассылок.

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

Спорить не буду, возможно я взял слишком "идеальный" вариант. Но все таки основной принцип понять можно. По идее это и есть решение массовой рассылки на e-mail. Пусть для начала будет более простой вариант. Пример из другого движка.
Иллюстрация
Как начальный вариант, в полне подойдет. Но только это должна быть рассылка новостей, а не уведомлений о сообщениях. Ну и текст в сообщении на e-mail должен быть соответствующий, т.е. само содержание рассылки. Соответственно должны быть функции отписаться/подписаться на рассылку у пользователей. А у администраторов формировать тему рассылки, чтобы было понятно пользователям, о чем рассылка. В качестве еще одного примера
Иллюстрация
Вот как то я так вижу массовую рассылку.
#26 7 апреля 2012 в 18:53
Отправила массовую рассылку всем пользователям и сайт полностью завис. Я не знаю, сколько и куда писем отправилось, потому что уже пол часа ничего не загружается. Кто знает, как это остановить? Может какой-то запрос в базу данных нужно сделать?
#27 7 апреля 2012 в 21:56
я тоже пару раз при массовой рассылке сервер ложил. ошибку 501 показывало. хотя сейчас не самый слабый хостинг.
#28 17 января 2013 в 10:21
Тема старая, и тем не менее, обновила сайт с 1.8 на 1.9 и при массовой рассылке теперь стабильно 504 и несколько минут висит. На 1.8 такого не было.
А теперь еще выясняется что не все получают письма, или эта проблема уже решена?
#29 17 января 2013 в 10:30
Бесплатное решение — пост #17. Пользуйтесь.
Другого бесплатного решения для 1.9 нет.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.