При разработке одной бизнес-системы понадобилось сделать возможность юзерам отправлять почту используя их почтовые ящики на 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); } }
|
запуск вот такого кода:
выдает такой лог:
| Код | 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 Подскажите, в чем ошибка? |