[text] рассылка

Viewer

copydownloadembedprintName: рассылка
  1. <?php
  2.   // Устанавливает лимит времени исполнения для этого файла (связано с тайм-аутом)
  3.     set_time_limit (1200);
  4.   // Адреса отправителя
  5.         $mail1="Ваше имя 1 <[email protected]>";
  6.         $mail1="Ваше имя 2 <[email protected]>";
  7.         $mail1="Ваше имя 3 <[email protected]>";
  8.  
  9.     $tmail1=htmlspecialchars($mail1);
  10.     $tmail2=htmlspecialchars($mail2);
  11.     $tmail3=htmlspecialchars($mail3);
  12.     
  13.   // Далее идёт сам скрипт
  14.   // Если массив POST не пустой, отправка состоялась
  15.     if (!empty($_POST) && !isset($sent)) {
  16.   
  17. // Определяем переменные
  18.     $emailer_subj = $_POST['emailer_subj'];
  19.     $emailer_mails = $_POST['emailer_mails'];
  20.     $emailer_text = $_POST['emailer_text'];
  21.     $emailer_yourmail = $_POST['emailer_yourmail'];
  22.  
  23.     // Теперь проверяем заполнение всех полей
  24.     if (empty($emailer_subj) || $emailer_subj=="Тема письма") {
  25.     // Если тема пустая...
  26.     $mail_msg='<b>Вы не ввели тему письма</b>';
  27.   } elseif (empty($emailer_mails) || $emailer_mails=="Почтовые адрсе") {
  28.     // Если адресов нет...
  29.     $mail_msg='<b>Не указано адреса получателей</b>';
  30.   } elseif (empty($emailer_text) || $emailer_text=="Текст письма") {
  31.     // Если сообщение пустое...
  32.     $mail_msg='<b>Вы не ввели текст письма</b>';
  33.   } else { // Если все поля заполнены верно...
  34.     // Готовим сообщение об успешной отправке... Вдруг у вас какой-то необычный браузер
  35.     $mail_msg='Ваше сообщение отправлено.<br>Нажмите <a href="'.$_SERVER['REQUEST_URI'].'">здесь</a>, если ваш браузер не поддерживает перенаправление.';
  36.     // Готовим заголовки письма... Будем отправлять письма в формате HTML и кодировке UTF-8
  37.     $headers="MIME-Version: 1.0\r\n";
  38.     $headers.="Content-type: text/html; charset=utf-8\r\n";
  39.     $headers.="From: $emailer_yourmail";
  40.     
  41.     // Обработка письма. Нужно удалить лишние пробелы и проставить переносы.
  42.     $emailer_text=preg_replace("/ +/"," ",$emailer_text); // множественные пробелы заменяются на одинарные
  43.     $emailer_text=preg_replace("/(\r\n){3,}/","\r\n\r\n",$emailer_text); // убираем лишние переносы (больше 1 строки)
  44.     $emailer_text=str_replace("\r\n","<br>",$emailer_text); // ставим переносы
  45.     
  46.     // Получаем массив адресов. В качестве разделителя у нас используется запятая.
  47.     $emails=explode(",", $emailer_mails);
  48.     $count_emails = count($emails); // Подсчёт количества адресов
  49.     // Запускаем цикл отправки сообщений
  50.     for ($i=0; $i<=$count_emails-1; $i++) // Отчёт начинается в массиве с нуля, поэтому уменьшаем сумму на единицу
  51.     {
  52.     // Подставляем адреса получаетелей и обрезаем пробелы с обоих сторон, если таковые имеются
  53.     $email=trim($emails[$i]);
  54.     // Отправляем письмо и готовим отчёт по отправке
  55.     if($emails[$i]!="") { // Проверка на случай попадения в массив пустого значения
  56.     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>";
  57.     sleep(5); // Делаем тайм-аут в 5 секунд
  58.     }
  59.     }
  60.     
  61.     // Запись отчёта в файл. Файл будет сгенерирован в той же папке, под названием log.txt. Проверьте настройку прав папки.
  62.     $log=fopen("log.txt","w");
  63.     fwrite($log,$report);
  64.     fclose($log);
  65.     // Переменная $sent – признак успешной отправки
  66.     $sent=1;
  67.   }
  68. } else { // Если в массиве POST пусто, форма еще не передавалась
  69.   // Готовим приглашение
  70.   $mail_msg='Все поля обязательны для заполнения.';
  71.   // Поля темы, адресов получаетелей и получателей, и текста в этом случае должны быть пустыми
  72.   $emailer_text=$emailer_subj=$emailer_mails=$emailer_yourmail='';
  73. }
  74.  
  75.   // Если $sent не существует, выводим форму или отчёт
  76.     if (!isset($sent)) {
  77.   // Если сообщение уже отправлено - выводим отчёт
  78.     if(isset($_GET['messent']))
  79.     {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;\">";
  80.     readfile("log.txt");
  81.     echo"</ol>";}
  82.     else {
  83.   // Или выводим форму, если сообщение ещё не отправлено. К форме также прилагается небольшой JavaScript, который отвечает за корректность введённой информации.
  84.     echo $text.=<<<post
  85.     <script type="text/javascript">
  86.     function form_validator(form) {
  87.     if (form.emailer_subj.value=='' || form.emailer_subj.value=='Тема письма') { alert('Укажите тему письма.'); form.emailer_subj.focus(); return false; }
  88.     if (form.emailer_mails.value=='' || form.emailer_mails.value=='Почтовые адреса') { alert('Укажите адреса получаталей.'); form.emailer_mails.focus(); return false; }
  89.     if (form.emailer_text.value=='' || form.emailer_text.value=='Текст письма') { alert('Вы не заполнили поле сообщения.'); form.emailer_text.focus(); return false; }
  90.     return true;
  91.     }
  92.     </script>
  93.     <style type="text/css">
  94.     form {display:block;margin:20px auto;width:500px;}
  95.     textarea, input, select {width:100%; margin:5px 0;}
  96.     textarea {height:200px;}
  97.     .red {color:#a00;}
  98.     </style>
  99.     <form method="post" onsubmit="return form_validator(this);">
  100.     <p class="red">$mail_msg</p>
  101.     <input type="text" name="emailer_subj" id="emailer_subj" value="Тема письма" title="По какому поводу пишем?" onfocus="if (this.value=='Тема письма') this.value='';" onblur="if (this.value=='') this.value='Тема письма';">
  102.     <textarea name="emailer_mails" id="emailer_mails" title="Кто получатели?" onfocus="if (this.value=='Почтовые адреса') this.value='';" onblur="if (this.value=='') this.value='Почтовые адреса';">Почтовые адреса</textarea>
  103.     <textarea name="emailer_text" id="emailer_text" title="Что пишем?" onfocus="if (this.value=='Текст письма') this.value='';" onblur="if (this.value=='') this.value='Текст письма';">Текст письма</textarea>
  104.     <select name="emailer_yourmail">
  105.     <option value="$mail1">$tmail1</option>
  106.     <option value="$mail2">$tmail2</option>
  107.     <option value="$mail3">$tmail3</option>
  108.     </select>
  109.     <input type="submit" value="Отправить" title="Отправить мыл">
  110.     </form>
  111. post;
  112. }
  113. }
  114. else { // А если существует...
  115.   // Посылаем в заголовке редирект (303 Refresh) на этот же адрес с дополнительным параметром messent
  116.   $ret_uri=$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
  117.   header("Refresh: 0; URL=http://".$ret_uri."?messent");
  118.   exit;
  119. }
  120.  
  121. ?>

Editor

You can edit this paste and save as new:


File Description
  • рассылка
  • Paste Code
  • 06 May-2021
  • 8.22 Kb
You can Share it: