那位知道如何处理?
另: 对于smtp服务器需要密码的情况该如何处理验证呢?
sory , 刚刚看到 smtp 发送邮件的问题 (链接的这个帖子怎么不是精华?, 建议斑竹给一个啊).
问题已经解决: 1. 命令data应该是"DATA\r\n" 2. from和to命令应该有, 否则一些server拒发邮件 3.使用base64_encode 加密用户名和密码
<?php
require("php\mail.php"); ?>
<? $smtp = "smtp.163.net"; $from ="hylpro@163.net";
$to = "hylpro@163.net"; $subject ="Hello php mail";
$message="Hello! this is a test use php";
$mail = new mail($smtp,"Welcom use this mail",true);
$mail->send( $to,$from,$subject,$message);
?>
<? //--------------- // 实现SMTP //---------------
class Mail{ var $lastmessage; //记录最后返回的响应信息 var $lastact; //最后的动作,字符串形式 var $welcome; //用在HELO后面,欢迎用户 var $debug; //是否显示调试信息 var $smtp; //smtp服务器 var $port; //smtp端口号 var $fp; //socket句柄
//Construct function mail($smtp, $welcome="", $debug=false) { if(empty($smtp)) die("SMTP cannt be NULL!");
$this->smtp=$smtp; if(empty($welcome)) { $this->welcome=gethostbyaddr("localhost"); } else $this->welcome=$welcome;
$this->debug=$debug; $this->lastmessage=""; $this->lastact=""; $this->port="25"; }
// function show_debug($message, $inout) { if ($this->debug) { if($inout=="in") //响应信息 { $m="<b> 收: </b>"; } else $m="<b> 发: </b>" ;
if(!ereg("n$", $message)) $message .= " ";
$message=nl2br($message);
echo "<font color=#339933> $m </font>$message "; } }//end show debug
function do_command($command, $code) {
$this->lastact=$command."\r\n"; $this->show_debug($this->lastact, "out");
fputs ( $this->fp, $this->lastact );
$this->lastmessage = fgets ( $this->fp, 512 );
$this->show_debug($this->lastmessage, "in");
if(!ereg("^$code", $this->lastmessage)) return false; else return true;
} //end do command
//发一个命令 function command($command, $code) { $this->lastact=$command."\r\n
|