我自己正在写一个smtp类 
实际上就是
$connect = fsockopen('smtp.qq.com',25,$errno,$errstr,30);
fputs($conect,'HELO smtp.qq.com');
fpust($conect,'AUTH LOGIN');
这种通信方式 现在我的问题是比如我fputs($conect,'HELO smtp.qq.com'); 这个正常情况应该返回
250 smtp.qq.com 我想获取这个250和以后产生的返回码来做判断此步骤是否成功完成
包括以后的例如AUTH LOGIN 返回334这样 但就是这步遇到困难了
先是
while( !feof($connect) ){
    $line = fgets($connect,512);
}
这种简直慢的无法接受 最长的时候120秒才返回数据
后来换了种循环判断方式
while($line = fgets($connect,512) ){
   if( substr($line,3,1) == " " ) break;
}
还是解决不了问题 真心请教各位 如何解决

解决方案 »

  1.   

    不知道 你看看你试试能不能给我个快速获得返回数据的方式?
    直接这样也发送不不出去
    define(CRLF, '\r\n');
    $errno = null;
    $errstr = null;
    $connect = fsockopen('smtp.qq.com',25,$errno,$errstr,30);
    fwrite($connect, 'HELO localhost'.CRLF);
    fwrite($connect, 'AUTH LOGIN'.CRLF);
    fwrite($connect, base64_encode('[email protected]').CRLF);
    fwrite($connect, base64_encode('xxxx').CRLF);
    fwrite($connect, 'Mail From:<[email protected]>'.CRLF);
    fwrite($connect, 'Rcpt To:<[email protected]'.CRLF);
    fwrite($connect, 'DATA'.CRLF.CRLF);
    fwrite($connect, 'SDFSFSDFSD'.CRLF);
    fwrite($connect, '.'.CRLF);
    fwrite($connect, 'quit'.CRLF);