За последние 24 часа нас посетили 17553 программиста и 1315 роботов. Сейчас ищут 1739 программистов ...

Поставит лимит на рассылку email

Тема в разделе "Работа с почтой", создана пользователем Rodimon, 26 май 2011.

  1. Rodimon

    Rodimon Активный пользователь

    С нами с:
    26 май 2011
    Сообщения:
    1
    Симпатии:
    0
    Вот столкнулся с такой проблемой, есть рабочий скрипт рассылки, но он рассылает без ограничения сразу на все email, естественно хост запретил, но общение с хостерами привело к тому что нужно сделать ограничение в рассылке 25 - 30 email за раз и с 00:00 до 7:00 утра. Либо чтоб рассылать сделать паузу между отправками. Вот подскажите пожалуйста как можно все это воплатить в этом коде? Раньше с рассылкой не сталкивался.


    Скрипт отправки email.



    PHP:
    1. //============================ГЕНЕРАЦИЯ НОВОСТНОЙ РАССЫЛКИ===============================================================
    2. if (isset($_POST['save_add_news'])) // сформируем и сохраним письмо после его добавления
    3. {
    4.  $body='<style type="text/css">
    5.              p, span, strong, b, div, a {font-family:tahoma;font-size:12px;}
    6.               a { text-decoration: underline; color: rgb(8, 87, 166); }
    7.               a:hover { text-decoration: none; }
    8.               #brd {border: 1px dotted rgb(204, 204, 204);}
    9.              </style>
    10.             <p>Новости '.$g_gorod_2.' от '.date("d.m.Y").'</p><br>
    11.              <a href="http://'.$g_domain.'"><img height="47" border="0" width="280" alt="" src="http://'.$g_domain.'/img/'.$g_gorod_4.'_logo_email.jpg" /></a>
    12.              <br><br><br>
    13.            <table cellspacing="5" cellpadding="5" width="100%" id="brd">
    14.            <tbody>';
    15.   $arr=explode("|", $_POST['sel_id_news']);
    16.   $n=1;
    17.   for ($i=0;$i<count($arr)-1;$i++) 
    18.   {
    19.     $ds_arr = mysql_fetch_assoc(mysql_query("SELECT * FROM news_list where id_news=".$arr[$i]));
    20.     if ($n==1) {$body.='<tr>';}
    21.     $body.='<td width="50%" valign="top" id="brd">
    22.                 <a target="_blank" href="http://'.$g_domain.'/news/news_full.php?id_news='.$ds_arr['id_news'].'">
    23.                 <img border="0" src="http://'.$g_domain.'/news/news_files/image_pict/'.$ds_arr['id_news'].'.jpg" /><br><br>
    24.                  <b>'.str_replace("'","\"",$ds_arr['caption_news']).'</b>
    25.                 </a><br><br>
    26.                 </td>';
    27.     $n++;
    28.     if ($n==3) {$body.='</tr>';$n=1;}          
    29.   }
    30.  $body.='</tbody></table><br>
    31.             <p>С уважением, Администрация городского портала <a href="http://'.$g_domain.'">http://'.$g_domain.'/</a><br />
    32.             г. '.$g_gorod_1.'<br />
    33.            [email=info@krasnodar-today.ru]info@krasnodar-today.ru[/email]</p>';
    34.            
    35.  if (isset($_POST['unsubscribe'])) $unsubscribe='yes'; else $unsubscribe='no';
    36.  $sql_str = "INSERT INTO send_to_all_mess(date_create,from_address,subject,text_message,count_email,status_,unsubscribe)
    37.              VALUES (NOW(),
    38.                       '".$_POST['from_address']."',
    39.                       '".$_POST['subject']."',
    40.                       '".$body."',
    41.                       ".$count_all_email.",
    42.                       '".$_POST['status_']."',
    43.                       '".$unsubscribe."')";
    44.  //echo $sql_str;
    45.  mysql_query($sql_str) or die(mysql_error());
    46.  $insert_id=mysql_insert_id();
    47.  $sql_str = "INSERT INTO send_list_email(email,id_subscribe)
    48.                                         select distinct(t.em),".$insert_id." from
    49.                                             (select email as em from object where email<>''
    50.                                              union all
    51.                                              select email as em from job_list where email<>''
    52.                                              union all
    53.                                              select from_email as em from send_message where from_email<>''
    54.                                             ) as t where t.em not in (SELECT email FROM send_ignore_list_email)";
    55.  mysql_query($sql_str) or die(mysql_error());
    56.  header("Location: send_to_all_email.php");
    57. }
    Используемый class.phpmailer

    PHP:
    1.  
    2. function mail_($From, $to, $subject, $body)
    3. {
    4.  require_once('class.phpmailer.php');
    5.  
    6.  $mailer = new PHPMailer;
    7.  $mailer->SetLanguage('en', $inc_dir);
    8.  $mailer->isHTML(true); // С понтом дела отправляем html-письмо
    9.  $mailer->CharSet  = 'windows-1251'; // В какой кодировке
    10.  $mailer->Timeout = 10;
    11.  $mailer->From     = $From;    // Что мы хотим видеть в поле From нашего письма
    12.  $mailer->FromName = "";
    13.  $mailer->Sender   = [email='Rodimon@yandex.ru]'Rodimon@yandex.ru[/email]';
    14. $mailer->Host     = 'smtp.yandex.ru'; // Наш smtp-сервер
    15. $mailer->Mailer   = 'smtp'; // Как отсылать. Вариант по умолчанию - 'mail'
    16. $mailer->Username = 'Rodimon'; // Логин для авторизации на smtp-сервере
    17. $mailer->Password = 'rodimon86'; // Пароль для авторизации
    18. $mailer->SMTPAuth = true; // Будем авторизоваться? Будем!
    19.  
    20. $mailer->Body     = $body; // html-код письма
    21. $mailer->AltBody  = $body; // plain-text версия
    22. $mailer->Subject  =  $subject;
    23. $mailer->AddAddress($to);
    24. $res = $mailer->Send();
    25. $mailer->ClearAddresses();
    26. return $res;
    27. }
    Заранее благодарен за любую помощь.