ЭНЦИКЛОПЕДИЯ СОВРЕМЕННОГО САЙТОСТРОЕНИЯ

Посоветуйте софт для своего сервера рассылок

Тема в разделе "Рассылки", создана пользователем Vaska, 14 янв 2016.

  1. Vaska

    Vaska Пользователь

    Сообщения:
    2
    Рейтинг:
    6
    Всем привет. Хочу делать рассылки для подписчиков своего (своих) сайта (ов). На собственном сервере.

    Встроенными средствами неудобно. А существующие онлайн сервисы типа того же смартреспондера не нравятся - дорого, странные правила, плохая тех поддержка и т.п.

    Посоветуйте софт/CMS для организации сервера рассылки.
     
    #1
  2. Загрузка...
  3. Vspishka76

    Vspishka76 Эксперт

    Сообщения:
    85
    Рейтинг:
    49
    Скрипт сервиса e-mail рассылок от Виталия Шелеста. Стоит денег (небольших), но в бесплатном доступе тоже имеется - гуглится на раз-два. Огромный функционал по работе с базами + много уроков по работе есть на просторах сети. Кстати, если углубиться в тему, то можно не просто под себя сделать сервис, а раскрутить и организовать уже для массового использования, как и сделал вышеупомянутый товарищ. Дерзайте, я работал уже с ним - жутко приятная вещь. Только будьте осторожны - затягивает неимоверно такая работа:D
     
    #2
    Jonny нравится это.
  4. Vaska

    Vaska Пользователь

    Сообщения:
    2
    Рейтинг:
    6
    Я так понимаю, что это box-mail.ru?
    Если да, то это не то. Там надо подключать свой сервер к их системе. А мне нужен полностью автономный сервер без внешнего контроля.
     
    Последнее редактирование модератором: 12 май 2017
    #3
  5. Kucheryaviy_e

    Kucheryaviy_e Веб-мастер

    Сообщения:
    101
    Рейтинг:
    41
    Род занятий:
    Копирайтер, web-программист
    Откуда:
    Россия
    Вот здесь я написал скрипт для рассылки. Если вам всё ещё интересно.
     
    #4
  6. Вадим

    Вадим Пользователь

    Сообщения:
    15
    Рейтинг:
    17
    Скриптов для создания воего сервиса рассылок (на своем сервисе) великое множество.

    Вот, к примеру:
    • BiMailer
    • PHP Newsletter
    • MailTUX
    А можно и свой скрипт написать.
     
    #5
  7. Вадим

    Вадим Пользователь

    Сообщения:
    15
    Рейтинг:
    17
    Вот пример скрипта для почтовой рассылки на своем сервере:

    Простой скрипт email рассылки

    Сам код скипта, файл emailer.php:
    PHP:
    <?php
      
    // Устанавливает лимит времени исполнения для этого файла (связано с тайм-аутом)
        
    set_time_limit (1200);
      
    // Адреса отправителя
        
    $mail1="Ваше имя 1 <your1@email.com>";
        
    $mail1="Ваше имя 2 <your2@email.com>";
        
    $mail1="Ваше имя 3 <your3@email.com>";

      
    // Обрабатываем адреса для отображения в форме
        
    $tmail1=htmlspecialchars($mail1);
        
    $tmail2=htmlspecialchars($mail2);
        
    $tmail3=htmlspecialchars($mail3);
       
      
    // Далее идёт сам скрипт
      // Если массив POST не пустой, отправка состоялась
        
    if (!empty($_POST) && !isset($sent)) {
     
    // Определяем переменные
        
    $emailer_subj $_POST['emailer_subj'];
        
    $emailer_mails $_POST['emailer_mails'];
        
    $emailer_text $_POST['emailer_text'];
        
    $emailer_yourmail $_POST['emailer_yourmail'];

        
    // Теперь проверяем заполнение всех полей
        
    if (empty($emailer_subj) || $emailer_subj=="Тема письма") {
        
    // Если тема пустая...
        
    $mail_msg='<b>Вы не ввели тему письма</b>';
      } elseif (empty(
    $emailer_mails) || $emailer_mails=="Почтовые адрсе") {
        
    // Если адресов нет...
        
    $mail_msg='<b>Не указано адреса получателей</b>';
      } elseif (empty(
    $emailer_text) || $emailer_text=="Текст письма") {
        
    // Если сообщение пустое...
        
    $mail_msg='<b>Вы не ввели текст письма</b>';
      } else { 
    // Если все поля заполнены верно...
        // Готовим сообщение об успешной отправке... Вдруг у вас какой-то необычный браузер
        
    $mail_msg='Ваше сообщение отправлено.<br>Нажмите <a href="'.$_SERVER['REQUEST_URI'].'">здесь</a>, если ваш браузер не поддерживает перенаправление.';
        
    // Готовим заголовки письма... Будем отправлять письма в формате HTML и кодировке UTF-8
        
    $headers="MIME-Version: 1.0\r\n";
        
    $headers.="Content-type: text/html; charset=utf-8\r\n";
        
    $headers.="From: $emailer_yourmail";
       
        
    // Обработка письма. Нужно удалить лишние пробелы и проставить переносы.
        
    $emailer_text=preg_replace("/ +/"," ",$emailer_text); // множественные пробелы заменяются на одинарные
        
    $emailer_text=preg_replace("/(\r\n){3,}/","\r\n\r\n",$emailer_text); // убираем лишние переносы (больше 1 строки)
        
    $emailer_text=str_replace("\r\n","<br>",$emailer_text); // ставим переносы
       
        // Получаем массив адресов. В качестве разделителя у нас используется запятая.
        
    $emails=explode(","$emailer_mails);
        
    $count_emails count($emails); // Подсчёт количества адресов
        // Запускаем цикл отправки сообщений
        
    for ($i=0$i<=$count_emails-1$i++) // Отчёт начинается в массиве с нуля, поэтому уменьшаем сумму на единицу
        
    {
        
    // Подставляем адреса получаетелей и обрезаем пробелы с обоих сторон, если таковые имеются
        
    $email=trim($emails[$i]);
        
    // Отправляем письмо и готовим отчёт по отправке
        
    if($emails[$i]!="") { // Проверка на случай попадения в массив пустого значения
        
    if(mail($email,$emailer_subj,$emailer_text,$headers)) $report.="<li><span style=\"color:green;\">Отправлено: ".$emails[$i]."</span></li>"; else $report.="<li><span style=\"color:red;\">Не отправлено: ".$emails[$i]."<span></li>";
        
    sleep(5); // Делаем тайм-аут в 5 секунд
        
    }
        }
       
        
    // Запись отчёта в файл. Файл будет сгенерирован в той же папке, под названием log.txt. Проверьте настройку прав папки.
        
    $log=fopen("log.txt","w");
        
    fwrite($log,$report);
        
    fclose($log);
        
    // Переменная $sent – признак успешной отправки
        
    $sent=1;
      }
    } else { 
    // Если в массиве POST пусто, форма еще не передавалась
      // Готовим приглашение
      
    $mail_msg='Все поля обязательны для заполнения.';
      
    // Поля темы, адресов получаетелей и получателей, и текста в этом случае должны быть пустыми
      
    $emailer_text=$emailer_subj=$emailer_mails=$emailer_yourmail='';
    }

      
    // Если $sent не существует, выводим форму или отчёт
        
    if (!isset($sent)) {
      
    // Если сообщение уже отправлено - выводим отчёт
        
    if(isset($_GET['messent']))
        {echo 
    $text.="<b style=\"text-align:center;margin-top:200px;display:block;\">Всё окей. Сообщение отправлено. <a href=\"emailer.php\">Ещё?</a><br><br><u>Отчёт:</u></b> <ol style=\"display:block;width:300px;margin:10px auto;\">";
        
    readfile("log.txt");
        echo
    "</ol>";}
        else {
      
    // Или выводим форму, если сообщение ещё не отправлено
        
    echo $text.=<<<post
        <script type="text/javascript">
        function form_validator(form) {
        if (form.emailer_subj.value=='' || form.emailer_subj.value=='Тема письма') { alert('Укажите тему письма.'); form.emailer_subj.focus(); return false; }
        if (form.emailer_mails.value=='' || form.emailer_mails.value=='Почтовые адреса') { alert('Укажите адреса получаталей.'); form.emailer_mails.focus(); return false; }
        if (form.emailer_text.value=='' || form.emailer_text.value=='Текст письма') { alert('Вы не заполнили поле сообщения.'); form.emailer_text.focus(); return false; }
        return true;
        }
        </script>
        <style type="text/css">
        form {display:block;margin:20px auto;width:500px;}
        textarea, input, select {width:100%; margin:5px 0;}
        textarea {height:200px;}
        .red {color:#a00;}
        </style>
        <form method="post" onsubmit="return form_validator(this);">
        <p class="red">
    $mail_msg</p>
        <input type="text" name="emailer_subj" id="emailer_subj" value="Тема письма" title="По какому поводу пишем?" onfocus="if (this.value=='Тема письма') this.value='';" onblur="if (this.value=='') this.value='Тема письма';">
        <textarea name="emailer_mails" id="emailer_mails" title="Кто получатели?" onfocus="if (this.value=='Почтовые адреса') this.value='';" onblur="if (this.value=='') this.value='Почтовые адреса';">Почтовые адреса</textarea>
        <textarea name="emailer_text" id="emailer_text" title="Что пишем?" onfocus="if (this.value=='Текст письма') this.value='';" onblur="if (this.value=='') this.value='Текст письма';">Текст письма</textarea>
        <select name="emailer_yourmail">
        <option value="
    $mail1">$tmail1</option>
        <option value="
    $mail2">$tmail2</option>
        <option value="
    $mail3">$tmail3</option>
        </select>
        <input type="submit" value="Отправить" title="Отправить мыл">
        </form>
    post;
    }
    }
    else { 
    // А если существует...
      // Посылаем в заголовке редирект (303 Refresh) на этот же адрес с дополнительным параметром messent
      
    $ret_uri=$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
      
    header("Refresh: 0; URL=http://".$ret_uri."?messent");
      exit;
    }

    ?>
    Файл защиты скрипта, файл .htaccess:
    PHP:
    Order Deny,Allow
    Deny from all
    Allow from ваш IP
    Если вы не имеете постоянного IP - адреса, то добавляем в скрипт пароль для авторизации:
    PHP:
    if (!isset($_SERVER['PHP_AUTH_USER'])) {
    // посылаем браузеру запрос логина/пароля
    header("WWW-Authenticate: Basic realm=\"Enter login and password\"");
    header("HTTP/1.0 401 Unauthorized");
    exit;
    } else {
    if(
    $_SERVER['PHP_AUTH_USER']!=='Ваш логин' && $_SERVER['PHP_AUTH_PW']!=='Ваш пароль')
    {
    header("WWW-Authenticate: Basic realm=\"Enter login and password\"");
    header("HTTP/1.0 401 Unauthorized");
    exit(
    'Введён неверный логин или пароль');
    }
    else {
    //Сюда нужно вставить тело скрипта
    }
    Во вложении исходные коды скрипта.

    Скрипт надо положить на сервере в отдельную папку.
     

    Вложения:

    • cod.zip
      Размер файла:
      3,3 КБ
      Просмотров:
      0
    #6