21,873
社区成员




$fp = fsockopen ( $smtp , $port , $errno , $errstr , 30 );
if (! $fp ) {
echo " $errstr ( $errno )<br />\n" ;
} else {
$re = fgets ( $fp , 256 );
$re_arr = explode(" ",$re);
//print_r($re_arr);
if ($re_arr[0]!=220) {
$state['state']=0;
$state['info'] ="连接到邮件服务器失败";
fclose ( $fp );
print_r($state);
exit();
return $state;
}
//send HELO sb
fwrite ( $fp , "HELO sb\r\n" );
$re = fgets ( $fp , 256 );
$re_arr = explode(" ",$re);
if ($re_arr[0]!=250) {
$state['state']=0;
$state['info'] ="邮件服务器无响应";
fclose ( $fp );
print_r($state);
exit();
return $state;
}
fwrite ( $fp , "auth login\r\n" );
$re = fgets ( $fp , 256 );
$re_arr = explode(" ",$re);
if ($re_arr[0]!=334) {
$state['state']=0;
$state['info'] ="邮件服务器拒绝登录";
fclose ( $fp );
print_r($state);
exit();
return $state;
}
//发送用户名
fwrite ( $fp , base64_encode($email_user)."\r\n" );
$re = fgets ( $fp , 256 );
// 这里遇到个问题 这个$re 有时返回是空的 没有任何内容
$re_arr = explode(" ",$re);
if ($re_arr[0]!=334) {
$state['state']=0;
$state['info'] ="用户名验证失败";
fclose ( $fp );
print_r($state);
exit();
return $state;
}
//发送密码
fwrite ( $fp , base64_encode($password)."\r\n" );
$re = fgets ( $fp , 256 );
$re_arr = explode(" ",$re);
if ($re_arr[0]!=235) {
$state['state']=0;
if ($re_arr[0]=="454") {
$state['info'] ="请开启smtp";
}else{
$state['info'] ="用户名或密码验证失败";
}
fclose ( $fp );
print_r($re_arr);
print_r($state);
exit();
return $state;
}
//mail from:<xxx@qq.com>
fwrite ( $fp , "mail from:<".$email.">\r\n" );
$re = fgets ( $fp , 256 );
$re_arr = explode(" ",$re);
if ($re_arr[0]!=250) {
$state['state']=0;
$state['info'] ="mail from 消息验证失败";
fclose ( $fp );
print_r($state);
exit();
return $state;
}
//rcpt to:<xxx@qq.com>
fwrite ( $fp , "rcpt to:<".$to.">\r\n" );
$re = fgets ( $fp , 256 );
$re_arr = explode(" ",$re);
if ($re_arr[0]!=250) {
$state['state']=0;
$state['info'] ="rcpt to 消息验证失败";
fclose ( $fp );
print_r($state);
exit();
return $state;
}
//data 命令
fwrite ( $fp , "data\r\n" );
$re = fgets ( $fp , 256 );
$re_arr = explode(" ",$re);
if ($re_arr[0]!=354) {
$state['state']=0;
$state['info'] ="邮件服务器拒绝";
fclose ( $fp );
print_r($state);
exit();
return $state;
}
// 发送数据
fwrite ( $fp , $mail_body );
$re = fgets ( $fp , 256 );
$re_arr = explode(" ",$re);
if ($re_arr[0]!=250) {
$state['state']=0;
$state['info'] ="邮件发送失败";
fclose ( $fp );
print_r($state);
exit();
return $state;
}else{
$state['state']=1;
$state['info'] ="邮件发送成功";
fclose ( $fp );
print_r($state);
exit();
return $state;
}