![]() |
|
首页 │ Apache │ Linux│ Java│ MySQL│ 注册│帮助 | |||
smtp验证函数发送邮件错误信息:错误信息501 input error. 66
请各位帮忙解决这样的问题:一个有关smtp发送邮件的错误:错误信息501 input error.66
sendmail.php源文件是这样子的:
//sendmail.php-----start
<?
function sendmail($to,$subject, $message,$df_from,$mail_flag)
{
$smtp = "111.11.111.111"; //您的SMTP 服务器供应商,可以是域名或IP地址
$check = 1; //SMTP需要要身份验证设值为 1 不需要身份验证值为 0,现在大多数的SMTP服务商都要验证,如不清楚请与你的smtp 服务商联系。
if ($check) {
$username = "mail@11.cn"; //您的email帐号名称
$password = "111"; //您的email密码
}
$s_from = "mail@11.cn"; //此email 必需是发信服务器上的email
//连接服务器
$fp = fsockopen ( $smtp, 25, $errno, $errstr, 60);
if (!$fp ) return "联接服务器失败".__LINE__;
set_socket_blocking($fp, true );
$lastmessage=fgets($fp,512);
if ( substr($lastmessage,0,3) != 220 ) return "错误信息:".$lastmessage.__LINE__;
//HELO
$yourname = "mail";
if($check == "1") $lastact="EHLO ".$yourname."\r\n";
else $lastact="HELO ".$yourname."\r\n";
fputs($fp, $lastact);
$lastmessage == fgets($fp,512);
if (substr($lastmessage,0,3) != 220 ) return "错误信息$lastmessage".__LINE__;
while (true) {
$lastmessage = fgets($fp,512);
if ( (substr($lastmessage,3,1) != "-") or (empty($lastmessage)) )
break;
}
//身份验证
if ($check=="1") {
//验证开始
$lastact="AUTH LOGIN"."\r\n";
fputs( $fp, $lastact);
$lastmessage = fgets ($fp,512);
if (substr($lastmessage,0,3) != 334) return "错误信息$lastmessage".__LINE__;
//用户姓名
$lastact=base64_encode($username)."\r\n";
fputs( $fp, $lastact);
$lastmessage = fgets ($fp,512);
if (substr($lastmessage,0,3) != 334) return "错误信息$lastmessage".__LINE__;
//用户密码
$lastact=base64_encode($password)."\r\n";
fputs( $fp, $lastact);
$lastmessage = fgets ($fp,512);
if (substr($lastmessage,0,3) != "235") return "错误信息$lastmessage".__LINE__;
}
//FROM:
$lastact="MAIL FROM: $s_from" . "\r\n";
fputs( $fp, $lastact);
$lastmessage = fgets ($fp,512);
if (substr($lastmessage,0,3) != 250) return "错误信息$lastmessage".__LINE__;
//TO:
$lastact="RCPT TO: $to" . "\r\n";
fputs( $fp, $lastact);
$lastmessage = fgets ($fp,512);
if (substr($lastmessage,0,3) != 250) return "错误信息$lastmessage".__LINE__;
//DATA
$lastact="DATA\r\n";
fputs($fp, $lastact);
$lastmessage = fgets ($fp,512);
if (substr($lastmessage,0,3) != 354) return "错误信息$lastmessage".__LINE__;
if($mail_flag==1)
{
$head = "MIME-Version: 1.0\r\n";
$head .= "Content-type: text/html; charset=??????\r\n";
}
//处理Subject头
$head="Subject: $subject\r\n".$head;
$message = $head."\r\n".$message;
//处理From头
$head="From: $df_from\r\n";
$message = $head.$message;
//处理To头
$head="To: $to\r\n";
$message = $head.$message;
//加上结束串
$message .= "\r\n.\r\n";
//发送信息
fputs($fp, $message);
$lastact="QUIT\r\n";
fputs($fp,$lastace);
fclose($fp);
return 0;
}
?>
//sendeamil.php-----end
下面是一个引用上面:sendmail.php函数的一个发送邮件的简单例子:
//test.php---------start
<? include"config.php";
include"sendmail.php";
?>
<?
$to="zhang@163.com";
$subject="你好";
$message="最近怎么样?";
if($end=sendmail($to,$subject,$message,"li@163.com",0))
{echo $end;
echo "<script>alert('信件发送成功!')</script>";
} else
echo "<script>alert('信件发送失败!')</script>";
?>
//test.php----------end
当执行test.php时,会出现“错误信息501 input error.66”的提示。
这可能跟什么有关系呢,请各位指点错误了。是不是跟邮件服务器的配置有关?

