麻辣堂|资源主站|开发论坛|在线手册
首页 Apache Linux Java MySQL 注册帮助 
PHP项目开发组是PHP开发资源网于2007组年建成立的项目开发团队,目前核心开发成员有27人, 项目协作成员8名.下设7个开发组,主要承接大/中型网站项目开发任务。

    由于开发任务较多,人员比较紧张,现面向社会招聘全职或者兼职开发人员,不管你是在校大学生,还是全职开发人员,以及SOHO都可以联系本站,我们可以长期合作,并为您带来丰厚的报酬。
  您现在的位置:PHP开发资源网 > 麻辣堂 > 详细资料
待解决
请高手帮看看怎么老出错?
悬赏分:20 - 2007年08月18日

错误如下:
Trying tosmtp.sohu.com:25 220 smtp125.sohu.com ESMTP Connected to relayhostsmtp.sohu.com >HELOlocalhost 502 Error: command not implemented Error:Remote host return ed"502 Error: command not implemented" Error:Error occurred whilesending HELO command. Error:Cannot sende mail to Disconnected from remote host
源代码如下:
<?
$smtpemailto="maito@sohu.com";
$smtpemailfrom="from@sohu.com";
$emailsubject="test";
$emailbody="contents..................";
//#########################################
$smtpserver="smtp.sohu.com";//SMTP服务器
$smtpserverport=25;//SMTP服务器端口
$smtpusermail="myname@sohu.com";//SMTP服务器的用户邮箱
$smtpuser="myname@sohu.com";//SMTP服务器的用户帐号
$smtppass="mypassword";//SMTP服务器的用户密码


$smtp=new smtp($smtpserver,$smtpserverport,true,$smtpuser,$smtppass);//这里面的一个true是表示使用身份验证,否则不使用身份验证.
$smtp->debug=true;//是否显示发送的调试信息
$emailtype="HTML";//信件类型,文本:text;网页:HTML
$smtp->sendmail($smtpemailto,$smtpemailfrom,$emailsubject,$emailbody,$emailtype);


class smtp{
/*Publicvar iables*/

var $smtp_port;

var $time_out;

var $host_name;

var $log_file;

var $relay_host;

var $debug;

var $auth;

var $user;

var $pass;

/*Privatevar iables*/
var $sock;

/*Constractor*/

function smtp($relay_host="",$smtp_port=25,$auth=false,$user,$pass)
{
$this->debug=false;

$this->smtp_port=$smtp_port;

$this->relay_host=$relay_host;

$this->time_out=30;//isusedinfsockopen()

$this->auth=$auth;//auth

$this->user=$user;

$this->pass=$pass;

$this->host_name="localhost";//isusedinHELOcommand
$this->log_file="";

$this->sock=false;
}

/*Mainfunction */

function sendmail($to,$from,$subject="",$body="",$mailtype,$cc="",$bcc="",$additional_headers="")
{
$mail_from=$this->get_address($this->strip_comment($from));

$body=ereg_replace("(^|(\r\n))(\.)","\1.\3",$body);

$header.="MIME-Version:1.0\r\n";

if($mailtype=="HTML"){
$header.="Content-Type:text/html\r\n";
}

$header.="To:".$to."\r\n";

if($cc!=""){
$header.="Cc:".$cc."\r\n";
}

$header.="Fromfrom<".$from.">\r\n";

$header.="Subject:".$subject."\r\n";

$header.=$additional_headers;

$header.="Date:".date("r")."\r\n";

$header.="X-Mailer:ByRedhat(PHP/".phpversion().")\r\n";

list($msec,$sec)=explode(" ",microtime());

$header.="Message-ID:<".date("YmdHis",$sec).".".($msec*1000000).".".$mail_from.">\r\n";

$TO=explode(",",$this->strip_comment($to));

if($cc!=""){
$TO=array_merge($TO,explode(",",$this->strip_comment($cc)));
}

if($bcc!=""){
$TO=array_merge($TO,explode(",",$this->strip_comment($bcc)));
}

$sent=true;

foreach($TO as $rcpt_to){
$rcpt_to=$this->get_address($rcpt_to);

if(!$this->smtp_sockopen($rcpt_to)){
$this->log_write("Error:Cannot send email to".$rcpt_to."\n");

$sent=false;

continue;
}

if($this->smtp_send($this->host_name,$mail_from,$rcpt_to,$header,$body)){
$this->log_write("E-mail has been sent to<".$rcpt_to.">\n");
}else{
$this->log_write("Error:Cannot sende mail to<".$rcpt_to.">\n");

$sent=false;
}

fclose($this->sock);

$this->log_write("Disconnected from remote host\n");
}

return $sent;
}

/*Privatefunction s*/

function smtp_send($helo,$from,$to,$header,$body="")
{
if(!$this->smtp_putcmd("HELO",$helo)){
return $this->smtp_error("sending HELO command");
}
//auth
if($this->auth){
if(!$this->smtp_putcmd("AUTHLOGIN",base64_encode($this->user))){
return $this->smtp_error("sending HELO command");
}

if(!$this->smtp_putcmd("",base64_encode($this->pass))){
return $this->smtp_error("sending HELO command");
}
}

if(!$this->smtp_putcmd("MAIL","FROM:<".$from.">")){
return $this->smtp_error("sending MAILFROM command");
}

if(!$this->smtp_putcmd("RCPT","TO:<".$to.">")){
return $this->smtp_error("sending RCPTTO command");
}

if(!$this->smtp_putcmd("DATA")){
return $this->smtp_error("sending DATA command");
}

if(!$this->smtp_message($header,$body)){
return $this->smtp_error("sending message");
}

if(!$this->smtp_eom()){
return $this->smtp_error("sending.[EOM]");
}

if(!$this->smtp_putcmd("QUIT")){
return $this->smtp_error("sending QUIT command");
}
return true;
}

function smtp_sockopen($address)
{
if($this->relay_host==""){
return $this->smtp_sockopen_mx($address);
}else{
return $this->smtp_sockopen_relay();
}
}

function smtp_sockopen_relay()
{
$this->log_write("Trying to".$this->relay_host.":".$this->smtp_port."\n");

$this->sock=@fsockopen($this->relay_host,$this->smtp_port,$errno,$errstr,$this->time_out);

if(!($this->sock&&$this->smtp_ok())){
$this->log_write("Error:Cannot connenct to relay host".$this->relay_host."\n");

$this->log_write("Error:".$errstr."(".$errno.")\n");

return false;
}

$this->log_write("Connected to relayhost".$this->relay_host."\n");

return true;;
}

function smtp_sockopen_mx($address)
{
$domain=ereg_replace("^.+@([^@]+)$","\1",$address);

if(!@getmxrr($domain,$MXHOSTS)){
$this->log_write("Error:Cannot resolve MX\"".$domain."\"\n");

return false;
}

foreach($MXHOSTS as $host){
$this->log_write("Trying to".$host.":".$this->smtp_port."\n");

$this->sock=@fsockopen($host,$this->smtp_port,$errno,$errstr,$this->time_out);

if(!($this->sock&&$this->smtp_ok())){
$this->log_write("Warning:Cannot connect to mx host".$host."\n");

$this->log_write("Error:".$errstr."(".$errno.")\n");

continue;
}

$this->log_write("Connected to mx host".$host."\n");

return true;
}

$this->log_write("Error:Cannot connect to any mx hosts(".implode(",",$MXHOSTS).")\n");

return false;
}

function smtp_message($header,$body)
{
fputs($this->sock,$header."\r\n".$body);

$this->smtp_debug(">".str_replace("\r\n","\n".">",$header."\n>".$body."\n>"));

return true;
}

function smtp_eom()
{
fputs($this->sock,"\r\n.\r\n");

$this->smtp_debug(".[EOM]\n");

return $this->smtp_ok();
}

function smtp_ok()
{
$response=str_replace("\r\n","",fgets($this->sock,512));

$this->smtp_debug($response."\n");

if(!ereg("^[23]",$response)){
fputs($this->sock,"QUIT\r\n");

fgets($this->sock,512);

$this->log_write("Error:Remote host return ed\"".$response."\"\n");

return false;
}

return true;
}

function smtp_putcmd($cmd,$arg="")
{
if($arg!=""){
if($cmd=="")$cmd=$arg;

else$cmd=$cmd."".$arg;
}

fputs($this->sock,$cmd."\r\n");

$this->smtp_debug(">".$cmd."\n");

return $this->smtp_ok();
}

function smtp_error($string)
{
$this->log_write("Error:Error occurred while".$string.".\n");

return false;
}

function log_write($message)
{
$this->smtp_debug($message);

if($this->log_file==""){
return true;
}

$message=date("MdH:i:s").get_current_user()."[".getmypid()."]:".$message;

if(!@file_exists($this->log_file)||!($fp=@fopen($this->log_file,"a"))){
$this->smtp_debug("Warning:Cannot open logfile\"".$this->log_file."\"\n");

return false;;
}

flock($fp,LOCK_EX);

fputs($fp,$message);

fclose($fp);

return true;
}

function strip_comment($address)
{
$comment="\([^()]*\)";

while(ereg($comment,$address)){
$address=ereg_replace($comment,"",$address);
}

return $address;
}

function get_address($address)
{
$address=ereg_replace("([\t\r\n])+","",$address);

$address=ereg_replace("^.*<(.+)>.*$","\1",$address);

return $address;
}

function smtp_debug($message)
{
if($this->debug)
{
echo$message."";
}
}
}

?>

提问者:onalps   08-18 09:09
答复
路过。。。顺便帮顶:)
回答者:玉米づ冰冻可乐 - 瓦岗村民 8-22 09:10
我也来回答:
不管你有没有帮助我们,瓦岗寨8万村民将感谢你。。。。。

为防止灌水,您需要计算一道数学题: 答案:
34 + 98 = ? 请将计算结果填在上面

 
[]
©2007 PhpRes.COM