Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Рассылка почты через smtp сервер
Форумы портала PHP.SU » » Работа с сетью » Рассылка почты через smtp сервер

Страниц (1): [1]
 

1. Okula - 08 Октября, 2011 - 11:04:51 - перейти к сообщению
Всем привет, у меня такая проблемма: при рассылке почты сервер нивкакую не хочет отсылать письма. Застряет на команде RCPT TO:
Подскажите в чём может быть проблемма?
Отправку каждому новому адресату сначала делал в одном потоке, тоесть запускал в цикл команду RCPT TO: не пошло. Сейчас пробую каждый раз новый поток открывать - тоже не пошло.
Ниже покажу метод из класса который отправляет почту:
PHP:
скопировать код в буфер обмена
  1. /**
  2.      * Отправка письма через smtp сервер
  3.      *
  4.      * @param mixed $mail пожет принимать значение строки (если письмо отправляется только на 1 электронный адрес),
  5.      * или может быть одномерным массивом, где каждое значение массива адрес электронной почты
  6.      * @param string $tema тема письма
  7.      * @param string $send текст письма
  8.      * @param string $us_name обращение к тому кому отправляем почту
  9.      * @return bool TRUE если всё удалось, FALSE если возникли ошибки
  10.      */
  11.     public function email($mail, $tema, $send, $us_name='') {
  12.         $em = is_array($mail);
  13.         if($em == TRUE) {
  14.             $mail_to = array_shift($mail);
  15.         } else {
  16.             $mail_to = $mail;
  17.         }
  18.        
  19.        
  20.         $header="Date: ".date("D, j M Y G:i:s")." +0700\r\n";
  21.         $header.="From: ".SMTP_USER." <".ADMAIL.">\r\n";
  22.         $header.="X-Mailer: The Bat! (v3.99.3) Professional\r\n";
  23.         $header.="X-Priority: 3 (Normal)\r\n";
  24.         $header.="Message-ID: <".mt_rand(111111111, 999999999).".".date("YmjHis")."@mail.ru>\r\n";
  25.         $header.="To: $us_name<$mail_to>\r\n";
  26.         $header.="Subject: =?utf-8?B?".base64_encode($tema)."?=\r\n";
  27.         $header.="MIME-Version: 1.0\r\n";
  28.         $header.="Content-Type: text/plain; charset=utf-8\r\n";
  29.  
  30.         $smtp_conn = fsockopen(SMTP_HOST, SMTP_PORT, $errno, $errstr, 10);
  31.         if(!$smtp_conn && $this->smtp_debug == TRUE) {
  32.             $this->erno = 2;
  33.             fclose($smtp_conn);
  34.             return FALSE;
  35.         }
  36.         $data = $this->get_data($smtp_conn);
  37.         fputs($smtp_conn,"EHLO vasya\r\n");
  38.         if($this->smtp_debug == TRUE) {
  39.             $code = mb_substr($this->get_data($smtp_conn),0,3,"utf-8");
  40.             if($code != 250) {
  41.                 $this->erno = 3;
  42.                 fclose($smtp_conn);
  43.                 return FALSE;
  44.             }
  45.         }
  46.         fputs($smtp_conn,"AUTH LOGIN\r\n");
  47.         if($this->smtp_debug == TRUE) {
  48.             $code = mb_substr($this->get_data($smtp_conn),0,3,"utf-8");
  49.             if($code != 334 && $this->smtp_debug == TRUE) {
  50.                 $this->erno = 4;
  51.                 fclose($smtp_conn);
  52.                 return FALSE;
  53.             }
  54.         }
  55.         fputs($smtp_conn,base64_encode(ADMAIL)."\r\n");
  56.         if($this->smtp_debug == TRUE) {
  57.             $code = mb_substr($this->get_data($smtp_conn),0,3,"utf-8");
  58.             if($code != 334 && $this->smtp_debug == TRUE) {
  59.                 $this->erno = 5;
  60.                 fclose($smtp_conn);
  61.                 return FALSE;
  62.             }
  63.         }
  64.         fputs($smtp_conn,base64_encode(SMTP_PASSWORD)."\r\n");
  65.         if($this->smtp_debug == TRUE) {
  66.             $code = mb_substr($this->get_data($smtp_conn),0,3,"utf-8");
  67.             if($code != 235 && $this->smtp_debug == TRUE) {
  68.                 $this->erno = 6;
  69.                 fclose($smtp_conn);
  70.                 return FALSE;
  71.             }
  72.         }
  73.         $size_msg=mb_strlen($header."\r\n".$send, "utf-8");
  74.         fputs($smtp_conn,"MAIL FROM:<".ADMAIL."> SIZE=".$size_msg."\r\n");
  75.         if($this->smtp_debug == TRUE) {
  76.             $code = mb_substr($this->get_data($smtp_conn),0,3,"utf-8");
  77.             if($code != 250 && $this->smtp_debug == TRUE) {
  78.                 $this->erno = 7;
  79.                 fclose($smtp_conn);
  80.                 return FALSE;
  81.             }
  82.         }
  83.         fputs($smtp_conn,"RCPT TO:<$mail_to>\r\n");
  84.         if($this->smtp_debug == TRUE) {
  85.             $code = mb_substr($this->get_data($smtp_conn),0,3,"utf-8");
  86.             if($code != 250 && $code != 251) {
  87.                 $this->erno = 8;
  88.                 fclose($smtp_conn);
  89.                 return FALSE;
  90.             }
  91.         }
  92.         fputs($smtp_conn,"DATA\r\n");
  93.         if($this->smtp_debug == TRUE) {
  94.             $code = mb_substr($this->get_data($smtp_conn),0,3,"utf-8");
  95.             if($code != 354 && $this->smtp_debug == TRUE) {
  96.                 $this->erno = 9;
  97.                 fclose($smtp_conn);
  98.                 return FALSE;
  99.             }
  100.         }
  101.         fputs($smtp_conn,$header."\r\n".$send."\r\n.\r\n");
  102.         if($this->smtp_debug == TRUE) {
  103.             $code = mb_substr($this->get_data($smtp_conn),0,3,"utf-8");
  104.             if($code != 250 && $this->smtp_debug == TRUE) {
  105.                 $this->erno = 10;
  106.                 fclose($smtp_conn);
  107.                 return FALSE;
  108.             }
  109.         }
  110.         fputs($smtp_conn,"QUIT\r\n");
  111.         fclose($smtp_conn);
  112.        
  113.         if($em == TRUE) {
  114.             if(count($mail) == 0) return TRUE; else $this->email($mail, $tema, $send);
  115.         } else return TRUE;
  116.            
  117.     }
2. Okula - 08 Октября, 2011 - 16:50:20 - перейти к сообщению
Никто мне не подскажет? Закатив глазки

 

Powered by ExBB FM 1.0 RC1