За последние 24 часа нас посетили 17613 программистов и 1321 робот. Сейчас ищут 1211 программистов ...

Ограничение на количество соединений

Тема в разделе "Работа с почтой", создана пользователем kruft, 2 апр 2012.

  1. kruft

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

    С нами с:
    2 апр 2012
    Сообщения:
    1
    Симпатии:
    0
    Добрый день!
    Для рассылки документов компании решил написать рнр скрипт отправки почты с вложением, однако столкнулся с ошибкой при отправке 5 по счету письма(хотя через проги для рассылки при установке ограничения на количество соединений равное 3 все работает): Error: too many connections from <ip>. Писал sleep(2) после отправки каждого письма в цикле - не помогло, да и в проге задержка по времени не помогала.
    Подскажите как сделать в рнр ограничение на количество соединений, а также как прикреплять несколько файлов(скрипт редактировал на примере из денвера, сорри за лишние переменные).
    Код (Text):
    1.  
    2. <html>
    3. <head><title>Проверка отладочной заглушки для sendmail</title></head>
    4. <body>
    5.  
    6. <?
    7. @extract($_SERVER, EXTR_SKIP); @extract($_POST, EXTR_SKIP); @extract($_GET, EXTR_SKIP);
    8. if(!@$to) $to="pochta@123.com";
    9. if(!@$subject) $subject="Congratulations!";
    10. if(!@$body) $body="Hello!\nToday is ".date("Y-m-d").".\nThis is the test\nmail body.\n\nIf you see this, sendmail stub seems to be OK.";
    11. ?>
    12.  
    13. <form action="<?=$_SERVER["REQUEST_URI"]?>" method=POST>
    14. <?if (empty($_GET['noform'])) {?>
    15.     <h2>Послать тестовое письмо:</h2>
    16.     <table  cellpadding=5 cellspacing=2>
    17.     <tr valign=top>
    18.         <td>To:</td>
    19.         <td><input type=text name=to value="<?=@HtmlSpecialChars($to)?>"></td>
    20.     </tr>
    21.     <tr valign=top>
    22.         <td>Subject:</td>
    23.         <td><input type=text name=subject value="<?=@HtmlSpecialChars($subject)?>"></td>
    24.     </tr>
    25.     <tr valign=top>
    26.         <td>Текст:</td>
    27.         <td><textarea name=body cols=50 rows=4><?=@HtmlSpecialChars($body)?></textarea></td>
    28.     </tr>
    29.     <tr valign=top>
    30.         <td colspan=2>
    31.             <input type=submit name=doSendSendmail value="Послать через mail() (sendmail)">
    32.            
    33.         </td>
    34.     </tr>
    35.     </table>
    36. <?} else {?>
    37.     <input type=submit name=doDel value="Очистить отладочную директорию">
    38. <?}?>
    39. </form>
    40.  
    41. <?
    42. if (@$doSendSendmail) {
    43.  
    44. function mail_attachment($filename, $path, $mailto, $from_mail, $from_name, $replyto, $subject, $message, $filerus) {
    45.     $file = $path.$filename;
    46.     $file_size = filesize($file);
    47.     $handle = fopen($file, "r");
    48.     $content = fread($handle, $file_size);
    49.     fclose($handle);
    50.     $content = chunk_split(base64_encode($content));
    51.     $uid = md5(uniqid(time()));
    52.     $name = basename($file);
    53.     $header = "From: ".$from_name." <".$from_mail.">\r\n";
    54.     $header .= "Reply-To: ".$replyto."\r\n";
    55.     $header .= "MIME-Version: 1.0\r\n";
    56.     $header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n";
    57.     $header .= "This is a multi-part message in MIME format.\r\n";
    58.     $header .= "--".$uid."\r\n";
    59.     $header .= "Content-type:text/plain; charset=windows-1251\r\n";
    60.     $header .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
    61.     $header .= $message."\r\n\r\n";
    62.     $header .= "--".$uid."\r\n";
    63.     $header .= "Content-Type: application/octet-stream; name=\"".$filerus."\"\r\n"; // use different content types here
    64.     $header .= "Content-Transfer-Encoding: base64\r\n";
    65.     $header .= "Content-Disposition: attachment; filename=\"".$filerus."\"\r\n\r\n";
    66.     $header .= $content."\r\n\r\n";
    67.     $header .= "--".$uid."--";
    68.     if (mail($mailto, $subject, "", $header)) {
    69.         echo "mail send ... OK"; // or use booleans here
    70.     } else {
    71.         echo "mail send ... ERROR!";
    72.     }
    73. }
    74.  
    75.  
    76.  
    77. //чтение списка контактов из базы данных (в нашем случае файл с контактами из трех позиций через ;)
    78.  
    79. $fp = fopen("stroki.txt", "r"); // Открываем файл в режиме чтения
    80. $file_array = file("stroki.txt");
    81. $num_str = count($file_array);
    82. echo "Всего контактов для рассылки:".$num_str."<br>";
    83.  
    84. if ($fp)
    85. {
    86.     $i=0;
    87.  
    88.     while (!feof($fp))
    89.     {
    90.        
    91.         $my_str[$i] = fgets($fp, 1024);
    92.         // echo $my_str."<br />";
    93.         $pieces = explode(";", $my_str[$i]);
    94.         $mass_addr[$i][0] = $pieces[0];
    95.         $mass_addr[$i][1] = $pieces[1];
    96.         $mass_addr[$i][2] = $pieces[2];
    97.         $i=$i+1;
    98.        
    99.     }
    100.  
    101.  
    102. }
    103.  
    104. else echo "Ошибка при открытии файла";
    105. fclose($fp);
    106.  
    107.  
    108. //конец работы с файлом и контактами
    109.  
    110. for($z=0;$z<$num_str;$z++)
    111. {
    112.  
    113. $my_file = "документ.pdf";
    114. $my_filerus = '=?windows-1251?B?'.base64_encode($my_file).'?=';
    115. $my_path = $_SERVER['DOCUMENT_ROOT']."/Tests/sendmail/";
    116. $pre_name = "123 оао";
    117. $my_name = '=?windows-1251?B?'.base64_encode($pre_name).'?=';
    118. $my_mail = "pochta@123.com";
    119. $my_replyto = "pochta@123.com";
    120. $pre_subject = "приглашение".$mass_addr[$z][0];
    121. $my_subject = '=?windows-1251?B?'.base64_encode($pre_subject).'?=';
    122. $body = stripslashes($body);
    123. $body2 = "Добрый день, ".$mass_addr[$z][1]."!\r\n".$body;
    124. $to = $mass_addr[$z][2];
    125.  
    126. mail_attachment($my_file, $my_path, $to, $my_mail, $my_name, $my_replyto, $my_subject, $body2, $my_filerus);
    127. sleep(2);
    128.  
    129. }
    130.  
    131. }
    132.  
    133.  
    134.  
    135. ?>
    136.  
    137. </body>
    138. </html>