Русское сообщество fluxbb

Быстрый лёгкий надёжный форумный движок

Вы не вошли.

Объявление

Вы можете внести свой вклад в содержание сайта. Жертвователи попадут в почетную группу "Спонсоры". Поддержать сайт.

#1 2006-05-24 12:10:22

glazs
Гость

Mass Mail

Есть ли какие-либо плагины для массовой рассылки писем на почту пользователям?

#3 2006-06-29 19:41:49

dont
Гость

Re: Mass Mail

этот mass mail в цикле пытается отправить всем пользователям сразу..
что вызывает нагрузку на сервер, да и не отсылаются в конечном итоге всем.. (у меня 1000 пользователей, практически никому не дошло)..
есть ли что-нибудь альтернативное?

#4 2006-11-13 20:37:45

Denis
Гость

Re: Mass Mail

Broadcast Email отсылает письма всем пользователям. Никто не встречал плагин или мод, чтобы письма отсылались только определенной группе?

#5 2006-11-14 17:40:16

Xbons
Гость

Re: Mass Mail

Да уж, у меня, например, ограничение на 50 писем в час, нужно более гибкое решение.

#6 2006-11-14 18:08:18

Slavik
Гость

Re: Mass Mail

Denis пишет:

Никто не встречал плагин или мод, чтобы письма отсылались только определенной группе?

Нет, никто не встречал, кому действительно надо, те не спрашивают, а ищут, притом не мод, а способ. В том же ap_broadcast_email мыла выдираются:

    $sql = "SELECT username, email
                FROM ".$db->prefix."users
                WHERE username != 'Guest'
                ORDER BY username";

Если врубить соображалку хоть на немного, то тогда получается такой код:

    $sql = "SELECT username, email
                FROM ".$db->prefix."users
                WHERE username != 'Guest' and group_id = ".$g_id."
                ORDER BY username";

Если еще на пару секунд, то в голову придет мысль что можно на форму кинуть textedit, хотя бы , элементарно, куда id, даже без названия группы.
Xbons
какое гибкое решение? Если стоит лимит, то ты и будешь отсылать по 50 писем в час, уж проще вручную отослать, чем что-то тут думать

#7 2006-11-14 18:37:54

Denis
Гость

Re: Mass Mail

Slavik пишет:

Если еще на пару секунд, то в голову придет мысль что можно на форму кинуть textedit, хотя бы , элементарно, куда id, даже без названия группы.

Не будете ли Вы так любезны кинуть textedit .

#8 2006-11-14 18:42:36

Slavik
Гость

Re: Mass Mail

50$! Ладно, шучу. Сейчас нет, может ближе к утру smile

#9 2006-11-14 22:20:07

Slavik
Гость

Re: Mass Mail

Мсье Denis
я все-таки решился взяться за ваше предложение. Результат моих усилий Вы можете посмотреть здесь. К моему великому сожалению я не смог протестировать данную модификацию подключаемого модуля, вследствие того, что изменял его на локальном вебсервере. Буду очень рад, если это именно то, что Вы хотели, и работает правильно.
С уважением,
Вячеслав

#10 2006-11-14 23:59:48

Denis
Гость

Re: Mass Mail

Уважаемый господин Slavik.

Я очень рад, что Вы откликнулись на мою просьбу. Ведь Ваша модификация значительно расширяет область   использования данного плагина. Все пользователи очень признательны Вам за это, а также за оперативность и доброжелательность. Плагин выполняет свои функции. 

Если будет нужна помощь в любых делах, несвязанных с программированием, надеюсь, Вы обратитесь ко мне, и я смогу Вам помочь. Еще раз спасибо.

Удачи.

Редактировался Denis (2006-11-15 00:00:22)

#11 2006-11-20 17:03:11

Kurt
Гость

Re: Mass Mail

А может, лучше, задумать о решении первой обозначенной проблемы? О том, что бы скрипт не слал всем одновременно письма, а ставил в очередь?

#12 2006-11-26 10:59:30

Kurt
Гость

Re: Mass Mail

И еще один принципиальный момент, в каком формате посылаются письма? Как на счет наших реалий, кодировок и всего такого? Это ведь важно.

#13 2006-11-26 11:37:37

Slavik
Гость

Re: Mass Mail

Kurt пишет:

А может, лучше, задумать о решении первой обозначенной проблемы? О том, что бы скрипт не слал всем одновременно письма, а ставил в очередь?

В cron на сервере? Или куда?

Kurt пишет:

И еще один принципиальный момент, в каком формате посылаются письма? Как на счет наших реалий, кодировок и всего такого? Это ведь важно.

Есть rfc, там все описано: как, куда и в какой кодировке. Есть девелоперы php, они реализуют протоколы в соответствии с rfc. Есть юзеры, они ни о чем не заботятся потому что есть девелоперы и rfc.

#14 2006-11-29 17:13:17

Xbons
Гость

Re: Mass Mail

Slavik, гибкое решение - это когда отослал первым 50-ти, потом следующим и т.д., неисключено, что мод это умеет делать, но по первым сообщениям, я понял обратное, возможно ошибаюсь?

Редактировался Xbons (2006-11-29 17:13:44)

#15 2007-03-11 10:07:59

niikto
Гость

Re: Mass Mail

да, кстате - так ведь например происходи переиндексация форума с очень большим количеством сообщений!! - заевел номер последнего поста в прошлой индексации, и продолжаешь уже с него - по тому же принципу сделать - не послалось на этом юзере - вводишь - начать с него, и пошел дальше

#16 2007-03-11 11:53:42

niikto
Гость

Re: Mass Mail

Slavik пишет:

Мсье Denis
я все-таки решился взяться за ваше предложение. Результат моих усилий Вы можете посмотреть здесь. К моему великому сожалению я не смог протестировать данную модификацию подключаемого модуля, вследствие того, что изменял его на локальном вебсервере. Буду очень рад, если это именно то, что Вы хотели, и работает правильно.
С уважением,
Вячеслав

Спасибо тебе за этот хак Slavik

но я в нем нашел одну загвоздку:

там по умолчанию стоит в 223-й строке:

<OPTION>Выбор группы</OPTION>

и вместо того чтобы выдавать ошибку выбора группы, плагин пытается искать пользователей с наименованием группы: "Выбор группы". и выдает ошибку синтаксиса SQL. я просто заменил на пустое место...

хотя можно и в 51-й строке заменить

if (trim($_POST['g_id']) == '')
на
if (trim($_POST['g_id']) == 'Выбор группы').

вот переведеная версия (ну уж простите меня за эти 8 КБАйт):

<?php
/***********************************************************************

  Copyright (C) 2005  Terrell Russell ([email protected])

  This file is part of PunBB.

  PunBB is free software; you can redistribute it and/or modify it
  under the terms of the GNU General Public License as published
  by the Free Software Foundation; either version 2 of the License,
  or (at your option) any later version.

  PunBB is distributed in the hope that it will be useful, but
  WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.

  You should have received a copy of the GNU General Public License
  along with this program; if not, write to the Free Software
  Foundation, Inc., 59 Temple Place, Suite 330, Boston,
  MA  02111-1307  USA

************************************************************************/



// Make sure no one attempts to run this script "directly"
if (!defined('PUN'))
    exit;

// Tell admin_loader.php that this is indeed a plugin and that it is loaded
define('PUN_PLUGIN_LOADED', 1);



// --------------------------------------------------------------------

// Confirm Page

if (isset($_POST['confirm']))
{
    // Make sure message body was entered
    if (trim($_POST['message_body']) == '')
        message('Вы не ввели тело письма!');

    // Make sure message subject was entered
    if (trim($_POST['message_subject']) == '')
        message('Вы не ввели тему письма!');

    // Make sure group id was entered
    if (trim($_POST['g_id']) == '')
        message('Вы не выбрали группу!');

    // Display the admin navigation menu
    generate_admin_menu($plugin);

    $preview_message_body = nl2br(pun_htmlspecialchars($_POST['message_body']));

    if ($_POST['g_id'] != 0) $adv = "and group_id = ".$_POST['g_id']; else $adv = '';
    $sql = "SELECT count(*) AS usercount
                FROM ".$db->prefix."users
                WHERE username != 'Guest' ".$adv."
                ORDER BY username";
//    message($sql);
    $result = $db->query($sql) or error('Could not get user count from database', __FILE__, __LINE__, $db->error());
       $row = $db->fetch_assoc($result);

?>
    <div id="exampleplugin" class="blockform">
        <h2><span>Массовая рассылка - Подтверждение</span></h2>
        <div class="box">
            <div class="inbox">
                <p>Пожалуйста подтвердите ваше вообщение ниже.<br /><br />Если чтото на правильно, пожалуйста <a href="javascript: history.go(-1)">Вернитесь</a>.</p>
            </div>
        </div>

        <h2 class="block2"><span>Подтверждение сообщения</span></h2>
        <div class="box">
            <form id="broadcastemail" method="post" action="<?php echo $_SERVER['REQUEST_URI'] ?>">
                <div class="inform">
                    <input type="hidden" name="message_subject" value="<?php echo pun_htmlspecialchars($_POST['message_subject']) ?>" />
                    <input type="hidden" name="message_body" value="<?php echo pun_htmlspecialchars($_POST['message_body']) ?>" />
                    <input type="hidden" name="g_id" value="<?php echo pun_htmlspecialchars($_POST['g_id']) ?>" />
                    <fieldset>
                        <legend>Получатели сообщения</legend>
                        <div class="infldset">
                            [ <strong><?php echo $row['usercount'] ?></strong> ] Зарегистрированных пользователей получат это сообщение (включая администратора).
                        </div>
                    </fieldset>
                </div>
                <div class="inform">
                    <fieldset>
                        <legend>Содержание сообщения</legend>
                        <div class="infldset">
                            <table class="aligntop" cellspacing="0">
                                <tr>
                                    <th scope="row">Тема</th>
                                    <td>
                                        <?php echo pun_htmlspecialchars($_POST['message_subject']) ?>
                                    </td>
                                </tr>
                                <tr>
                                    <th scope="row">Тело письма</th>
                                    <td>
                                        <?php echo $preview_message_body ?>
                                    </td>
                                </tr>
                                <tr>
                                    <th scope="row">Группа</th>
                                    <td>
                                        <?php echo $_POST['g_id']?>

                                    </td>
                            </table>
                            <div class="fsetsubmit"><input type="submit" name="send_message" value="Подтверждаю - Послать" tabindex="3" /></div>
                            <p class="topspace">Пожалуйста нажмите кнопку только однажды. Ожидайте сообщения о результате.</p>
                        </div>
                    </fieldset>
                </div>
            </form>
        </div>
    </div>
<?php

}

// --------------------------------------------------------------------

// Send the Message

else if (isset($_POST['send_message']))
{

    require_once PUN_ROOT.'include/email.php';

    // Display the admin navigation menu
    generate_admin_menu($plugin);

    if ($_POST['g_id'] != '0') $gid = "and group_id = ".$_POST['g_id']; else $gid = '';
    $sql = "SELECT username, email
                FROM ".$db->prefix."users
                WHERE username != 'Guest' ".$gid."
                ORDER BY username";
    $result = $db->query($sql) or error('Could not get users from the database', __FILE__, __LINE__, $db->error());
       while($row = $db->fetch_assoc($result))
       {
           $addresses[$row['username']] = $row['email'];
       }

    $usercount = count($addresses);

    foreach ($addresses as $recipientname => $recipientemail)
    {

        $mail_to        = $recipientname." <".$recipientemail.">";
        $mail_subject   = pun_htmlspecialchars($_POST['message_subject']);
        $mail_message   = pun_htmlspecialchars($_POST['message_body']);

        pun_mail($mail_to, $mail_subject, $mail_message);

    }



?>
    <div class="block">
        <h2><span>Массовая рассылка - Сообщение отослано</span></h2>
        <div class="box">
            <div class="inbox">
                <p>Сообщение было отослано [ <strong><?php echo $usercount ?></strong> ] Зарегистрированным пользователям.</p>
                <p>Вы так же получите администраторскую копию в через несколько минут.</p>
                <p>Пожалуйста просмотрите администраторскую копию для проверки.</p>
            </div>
        </div>
    </div>
<?php

}

// --------------------------------------------------------------------

// Display the Main Page

else
{
    // Display the admin navigation menu
    generate_admin_menu($plugin);

?>
    <div id="exampleplugin" class="blockform">
        <h2><span>Массовая рассылка e-mail</span></h2>
        <div class="box">
            <div class="inbox">
                <p>Этот плагин позволяет администратору посылать массовые сообщения (e-mail) всем зарегистрированным пользователям</p>
                <p>После заполнения формы на следующей странице будет запрошено подтверждение во избежание ошибок.</p>
            </div>
        </div>

        <h2 class="block2"><span>Составление письма</span></h2>
        <div class="box">
            <form id="broadcastemail" method="post" action="<?php echo $_SERVER['REQUEST_URI'] ?>">
                <div class="inform">
                    <fieldset>
                        <legend>Содержание письма</legend>
                        <div class="infldset">
                            <table class="aligntop" cellspacing="0">
                                <tr>
                                    <th scope="row">Тема</th>
                                    <td>
                                        <input type="text" name="message_subject" size="50" tabindex="1" />
                                    </td>
                                </tr>
                                <tr>
                                    <th scope="row">Тело письма</th>
                                    <td>
                                        <textarea name="message_body" rows="14" cols="48" tabindex="2"></textarea>
                                    </td>
                                </tr>
                                <tr>
                                    <th scope="row">Группа</th>
                                    <td>
                                        <SELECT NAME="g_id">
                                          <OPTION></OPTION>
                                          <OPTION VALUE="0">Все группы</OPTION>
<?php
$result = $db->query("SELECT g_id, g_title FROM ".$db->prefix."groups WHERE g_title != 'Guest' ORDER BY g_id");
while ($groups = $db->fetch_assoc($result)) {
echo "<option value=".$groups['g_id'].">".$groups['g_title']."</option>";
}
?>

                                        </SELECT>
                                    </td>
                                </tr>
                            </table>
                            <div class="fsetsubmit"><input type="submit" name="confirm" value="перейти к подтверждению" tabindex="3" /></div>
                        </div>
                    </fieldset>
                </div>
            </form>
        </div>
    </div>
<?php

}

// --------------------------------------------------------------------

// Note that the script just ends here. The footer will be included by admin_loader.php.

#17 2007-08-07 22:37:00

artoodetoo
Гость

Re: Mass Mail

я подшаманил Broadcast Email mod (AP_Broadcast_Email.php)
берет весь список пользователей, а не по группам или еще как, но отсылка почты ведется порциями. по умолчанию по 20 писем за шаг (можно задать свое). надеюсь кому-то поможет.
если php-шная функция mail() вернула ошибку, мы об этом узнаем!

в include/email.php найти

        mail($to, $subject, $message, $headers);

заменить на

        return mail($to, $subject, $message, $headers);

в директорию plugins залить AP_Power_Email.php отсюда:
http://master.1wd.ru/download/AP_Power_Email.zip

#18 2008-03-05 04:52:22

flashcat
Гость

Re: Mass Mail

Кто поможет у меня на форуме глюк с рассылкой. Отправляю "Участникам" а они все приходят "Администратору" подскажите в чем проблема или хотя бы где искать. За ранее спасибо.

#19 2008-03-05 07:24:56

iDrum
Гость

Re: Mass Mail

оффтоп:изврат использовать пхп для рассылки

Подвал доски

Под управлением FluxBB. Хостинг Hostens