您好,欢迎访问一九零五行业门户网

php如何验证smtp信息的正确

最近在用dede做站,看到后台有启用smtp方式发送邮件的设置,但没有验证。请问各位php大神,如何验证填写的smtp信息是否正确,验证包括端口、用户名、密码?求php代码实现,并输出这些错误信息,100分奉上!感谢。
回复讨论(解决方案) dede的启用smtp方式发送邮件的设置,你是安装的插件吗?
我本地装的最新dede好像没这个功能设置哦
回楼上大牛,我只要能验证smtp信息是否正确就行,不需要做成dede插件。
//打开smtp服务器端口
$fp = @fsockopen($smtp_host, 25);
if (!$fp)
echo error: cannot conect to .$smtp_host.
;
$smtp = array( //1、ehlo,期待返回220或者250 array(ehlo .$loc_host.$lb,220,250,helo error: ), //2、发送auth login,期待返回334 array(auth login.$lb,334,auth error:), //3、发送经过base64编码的用户名,期待返回334 array(base64_encode($smtp_acc).$lb,334,authentification error : ), //4、发送经过base64编码的密码,期待返回235 array(base64_encode($smtp_pass).$lb,235,authentification error : ) ); //5、发送mail from,期待返回250 $smtp[] = array(mail from: .$lb,250,mail from error: ); //6、发送rcpt to。期待返回250 $smtp[] = array(rcpt to: .$lb,250,rcpt to error: ); //7、发送data,期待返回354 $smtp[] = array(data.$lb,354,data error: ); //8.0、发送from $smtp[] = array(from: .$from.$lb,,); //8.2、发送to $smtp[] = array(to: .$to.$lb,,); //8.1、发送标题 $smtp[] = array(subject: .$subject.$lb,,);$result_str=; //发送smtp数组中的命令/数据 foreach($smtp as $req) { //发送信息 @fputs($fp, $req[0]); //如果需要接收服务器返回信息,则 if($req[1]) { //接收信息 while($result = @fgets($fp, 1024)) { if(substr($result,3,1) == ) { break; } }; if (!strstr($req[1],substr($result,0,3))) { $result_str.=$req[2].$result.
; } } } //关闭连接 @fclose($fp); return $result_str; }
倒没有没弄过验证smtp的端口、用户名、密码,端口还好说,但用户名、密码的话,只能尝试去请求来判断了...
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 relay host .$this->relay_host.\n); 
return true;; 
}
其它类似信息

推荐信息