Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Отправка писем через SMTP mail.ru


Автор: begin 16.10.2012, 18:34
При разработке одной бизнес-системы понадобилось сделать возможность юзерам отправлять почту используя их почтовые ящики на mail.ru, привязанные к их аккаунтам в нашей системе.
Через IMAP смогли сделать проверку и чтение писем, а вот с отправкой через SMTP пока не получается.
За основу был взят вот такой распространенный код:
Код

function mail2($login, $passwd, $to, $subj, $text){
 $fp=fsockopen("smtp.mail.ru", 2525);
 if($fp){
 $post[]="HELO mail.ru\r\n";
 $post[]="AUTH LOGIN ".base64_encode($login)."\r\n";
 $post[]=base64_encode($passwd)."\r\n";
 $post[]="MAIL FROM: <".$login.">\r\n";
 $post[]="RCPT TO: <".$to.">\r\n";
 $post[]="DATA\r\n";
 $post[]="From: ".$login."\r\n";
 $post[]="Date: ".date('r')."\r\n";
 $post[]="To: ".$to."\r\n";
 $post[]="Subject: ".$subj."\r\n";
 $post[]="MIME-Version: 1.1\r\n";
 $post[]="Content-type: text; charset=windows-1251\r\n";
 $post[]="Content-Transfer-Encoding: 8bit\r\n";
 $post[]="\r\n";
 $post[]=$text."\r\n.\r\n";
 $post[]="QUIT\r\n";
 foreach($post AS $k=>$v)
 {
 fwrite($fp, $v);
 if($k<7 || $k>14){
$answ = fgets($fp, 128);
echo $v.'<br>';
echo $answ.'<br>';
}
 }
 fclose($fp);
 }
 }


запуск вот такого кода:
Код

echo mail2('[email protected]','12345','[email protected]','проверка','привет! проверка работы скрипта');


выдает такой лог:
Код

HELO mail.ru 
220 smtp3.mail.ru ESMTP ready 

AUTH LOGIN emFrbGllbnRvbUBtYWlsLnJ1 
250 smtp3.mail.ru 

cTExMTExMQ== 
334 UGFzc3dvcmQ6 

MAIL FROM: [email protected] 
235 Authentication succeeded 

RCPT TO: [email protected]
554 SMTP synchronization error 

DATA 
From: [email protected]
QUIT


Т.е. на команду RCPT TO сервер отвечает ошибкой:
554 SMTP synchronization error
Подскажите, в чем ошибка?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)