ExBB Community » Файловый ExBB » Решение проблем » Массовая рассылка с админки

Страниц (4): [1] 2 3 4 »
 

1. Defenderyk - 17 марта 2010 — 15:59 - перейти к сообщению
Работает или нет? Пробовал несколько раз, ждет около минуты и пишет 502 ошибку
2. Александр Михалицын - 17 марта 2010 — 17:01 - перейти к сообщению
Defenderyk,
да работает вроде, сколько юзеров на форуме у тебя зарегистрировано? Улыбка

Надо метод $fm->_SendMail фиксить, чтобы не разом все отправлял, а кусочками...
Сегодня-завтра накатаю фикс. Подмигивание
(Добавление)
Кстати, Defenderyk, попробуй-ка в fm.class.php
заменить строку @set_time_limit(360); на set_time_limit(3600); (убрал оператор @, чтобы вылетел ворнинг если запрещен сеттаймлимит, ну и время поменял. Улыбка
3. Defenderyk - 17 марта 2010 — 17:20 - перейти к сообщению
3000 юзеров
вообще сама отправка работает всмысле движка, т.е если новую тему создаю, то приходит на мыло уведомление.

а вот отправка из админки не идет
4. Defenderyk - 18 марта 2010 — 07:41 - перейти к сообщению
vipraskrutka, так этот скрипт еще надо встроить в форум, чтобы все ящики были)
(Добавление)

ПС. кстати почему каретка при обращении по нику в неположенном месте?
5. Александр Михалицын - 18 марта 2010 — 14:48 - перейти к сообщению
vipraskrutka,
ой! Как сложно. Киньте мне этот скрипт прикручу к форуму лучше. Улыбка
6. Александр Михалицын - 18 марта 2010 — 15:31 - перейти к сообщению
vipraskrutka,
я сделал фикс для FM RC 1, в файле fm.class.php (найти и заменить функцию):
CODE:
/*
_SendMail функция отправки e-mail через sendmail сервера
*/
function _SendMail($list, $user_id_offset=0) {//sys_improve (Добавил аргумент)
$headers = 'From: '.$list[0].' <'.$list[1].">\n";
$headers .= 'Reply-To: '.$list[1]."\n";
$headers .= 'Return-Path: '.$list[1]."\n";
$headers .= "MIME-Version: 1.0\nContent-type: text/plain; charset=windows-1251\nContent-Transfer-Encoding: 8bit\nDate: " . gmdate('D, d M Y H:i:s', time()) . " UT\nX-Priority: 3\nX-MSMail-Priority: Normal\nX-Mailer: PHP\n";

$skip_mails = (file_exists(FM_SKIP_MAILS)) ? file(FM_SKIP_MAILS):array();
if (count($skip_mails) !== 0) {
unset($skip_mails[0]);
$skip_mails = preg_replace("#(\r\n|\|$)#","",trim(implode("|",$skip_mails)));
} else {
$skip_mails = "@";
}

$users = $this->_Read(FM_USERS);
if (is_array($list[2])) {

@set_time_limit(360);

$before_time = time();

foreach ($list[2] as $user_id => $flag) {
$user_id = $user_id_offset + $user_id;
if (isset($users[$user_id]) && !preg_match("#(".$skip_mails.")$#is",$users[$user_id]['m'])) {
mail($users[$user_id]['m'], $list[3], $list[4], $headers);

//Если разница максимального времени выполнения скрипта и времени между началом цикл
//и временем текущей итерации цикла <= 2, то завершаем цикл и сохраняем смещение :-)
if ((360 - (time() - $before_time)) <= 2)
{
$this->_Read2Write($fp, 'data/massmail_tmpdb.php');
$this->_Write($fp, array($list, $uid_offset));
$fm->_Message($fm->LANG['AdminMassMail'],$fm->LANG['MassMailNSended'],'setmembers.php?action=massmail_offset',1);
}
}
}
} else {
if (!preg_match("#(".$skip_mails.")$#is",$list[2])) {
mail($list[2], $list[3], $list[4], $headers);
}
}
}

function _SendMail_with_offset()
{
$tmp_db = $this->_Read('data/massmail_tmpdb.php');
$this->_SendMail($tmp_db[0], $tmp_db[1]);
}


В файле setmembers.php, после:
CODE:
} elseif ($fm->input['action'] == 'massmail') {
if ($fm->_Intval('dosend') === 1) {
if ($fm->input['subject'] == '' || $fm->input['message'] == '') {
$fm->_Message($fm->LANG['AdminMassMail'],$fm->LANG['EmailNotEmpty'],'',1);
}
$allusers = $fm->_Read(FM_USERS,FALSE);
SkipMails();
array_filter($allusers,'MAP_MAIL');
unset($allusers);

$total_mails = sizeof($usersmails);
if ($total_mails > 0) {
$message = sprintf ($fm->LANG['MassMailText'],
$fm->exbb['boardname'],
$fm->exbb['boardurl'],
$fm->input['message']);
$fm->_Mail($fm->exbb['boardname'],$fm->exbb['adminemail'],$usersmails,$fm->input['subject'],$message);
$fm->_WriteLog($fm->LANG['LogMassMail'],1);
$fm->_Message($fm->LANG['AdminMassMail'],sprintf($fm->LANG['MassMailSended'],$total_mails),'setmembers.php?action=massmail',1);
} else {
$fm->_Message($fm->LANG['AdminMassMail'],$fm->LANG['EmailAdminError'],'',1);
}
} else {
include('./admin/all_header.tpl');
include('./admin/nav_bar.tpl');
include('./admin/mass_mail.tpl');
include('./admin/footer.tpl');
}

добавить:
CODE:
} elseif ($fm->input['action'] == 'massmail_offset') {
$fm->_SendMail_with_offset();


lang_admin_setmembers.php
CODE:
$this->LANG['MassMailNSended'] = 'Сообщение разослано на ряд адресов, но рассылка еще не окончена, сейчас произойдет переадресация и рассылка продолжится.';

Я не тестировал (поскольку столь крупной базы у меня нет), если кто-то может -- буду рад если вы протестируете на локалке с Денвером скрипт рассылки.

В отличие от скрипта WR, моя реализация разбивает рассылку не по заданному количеству писем, а динамически, упираясь на время выполнения скрипта.
7. Александр Михалицын - 18 марта 2010 — 15:48 - перейти к сообщению
vipraskrutka,
так моя реализация так и делает. Разница лишь в том, что размер этой самой "пачки" определяется автоматически.)) Улыбка
8. Александр Михалицын - 18 марта 2010 — 15:55 - перейти к сообщению
vipraskrutka,
так а смысл, он по тайм лимиту определяет сколько еще скрипту осталось работать и если времени мало осталось, завершает рассылку... Для сервера разницы никакой...
9. Александр Михалицын - 18 марта 2010 — 16:15 - перейти к сообщению
vipraskrutka,
>Проблемы возникают у почтового сервера!
Смотря как настроен php. Либо отправка происходит средствами сендмейла либо smtp,
но тут опять же, размер "пачки" нужно еще определить. Если вы предложите оптимальный размер "пачки" я реализую такой скрипт. Улыбка
10. Defenderyk - 1 мая 2010 — 17:58 - перейти к сообщению
так как обстоят дела?)
11. Rutir123 - 2 мая 2010 — 20:20 - перейти к сообщению
помогите пожалуйста! когда нажимаю массовая рассылка в админке выдает вот таких много сообщений


CODE:
Notice: Undefined offset: 1 in /public_html/include/lib.php on line 30
12. viperrr - 13 июня 2010 — 11:41 - перейти к сообщению
У меня ошибка при отправке такая:

Notice: Undefined offset: 1 in /home/uno2126/public_html/forum/include/lib.php on line 50

В чем может быть проблемма ?
на форуме 300человек
13. viperrr - 14 июня 2010 — 14:59 - перейти к сообщению
Походу мне некто не поможет! Мда?
14. Defenderyk - 16 июня 2010 — 10:16 - перейти к сообщению
viperrr пишет:
Походу мне некто не поможет!
а ты права правильно поставил на файлы?
15. viperrr - 17 июня 2010 — 04:46 - перейти к сообщению
Defenderyk пишет:
viperrr пишет:
Походу мне некто не поможет!
а ты права правильно поставил на файлы?



Перевод с транслита:
т6 про ети права?

<<< для большинства серверов CHMOD на файлы для записи (напр. allforums.php) 0666, на папки для записи (напр. data) 0777, для всех остальных файлов и папок 0644 и 0755 соответственно. >>>

Перевод с транслита:
форум много раз обновлjалсjа, но всегда по инстреикциjам, долзно б6т' все правел'но раставленно.
на какие именно фаил6 надо проверит' права?

Соррy за ету абру-кадабру, у менjа на работе нет русскоy клавиатур6
Радость

Яндекс.Метрика   

Powered by ExBB
[Script Execution time: 0.0226]     [ ]