Народ, помогите, пожалуйста! Решил написать простецкий скрипт отправки почты. Проверил nslookup-ом сервера обмена почтой на Mail.ru. код PHP Code: <?php $host="mxs.mail.ru"; $port="25"; $from="[email protected]"; $to="[email protected]"; $text="test"; $f=fsockopen($host,$port); fputs($f, "HELO {$_SERVER['SERVER_NAME']}\r\n"); fputs($f,"MAIL FROM: <$from>"); print(fgets($f)); print(fgets($f)); fputs($f,"RCPT TO: <$to>"); fputs($f,"DATA"); fputs($f,"$text"); fputs($f,"RSET"); fputs($f,"QUIT"); ?> Коннектится нормально, при трассировке выдает, что все пучком: 220 Mail.Ru ESMTP 250 mx20.mail.ru ready to serve Но мыло не приходит.
Я попробовал - то же самое. То есть он нормально коннектится к почтовому серваку, а дальше - ни ответа, ни привета. И еще с этим скриптом неясно - при попытке прочтения из сокета более двух строк - скрипт не завершает работу. То есть, если читать а-ля while(!feof($f)) { print(fgets($f)); } - подвисает, и все.
function mail($login, $passwd, $to, $subj, $text){ $fp=fsockopen("smtp.mail.ru", 25); 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."@mail.ru\r\n"; $post[]="RCPT TO: ".$to."\r\n"; $post[]="DATA\r\n"; $post[]="From: ".$login."@mail.ru\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);} } fclose($fp); } }