网站首页 > 代码片段 > Php > 正文

php Socket发送电子邮箱来验证邮箱的真实有效性而非格式

2017-08-26 22:29:48 来源: 点击:站内收藏
 
<?php

/*请尊重别人的劳动成功,请保留此版权信息,谢谢!
作者:小露珠3.3
扬帆修正一点东西:在代码中已经用注释注明,本代码现在向qq发信没问题~
*/
set_time_limit(120);
class smtp_mail
{
var $host;           //主机
var $port;           //端口 一般为25
var $user;           //SMTP认证的帐号
var $pass;           //认证密码
var $debug = false;   //是否显示和服务器会话信息?
var $conn;
var $result_str;       //结果
var $in;           //客户机发送的命令
var $from;           //源信箱
var $to;           //目标信箱
var $subject;         //主题
var $body;           //内容
function smtp_mail($host,$port,$user,$pass,$debug=false)
{
   $this->host   = $host;
   $this->port   = $port;
   $this->user   = base64_encode($user);
   $this->pass   = base64_encode($pass);
   $this->debug   = $debug;
   $this->socket = socket_create (AF_INET, SOCK_STREAM, SOL_TCP);   //具体用法请参考手册
   if($this->socket)
   {
   $this->result_str   =   "创建SOCKET:".socket_strerror(socket_last_error());
   $this->debug_show($this->result_str);
   }
   else
   {
   exit("初始化失败,请检查您的网络连接和参数");
   }
   $this->conn = socket_connect($this->socket,$this->host,$this->port);
   if($this->conn)
   {
   $this->result_str   =   "创建SOCKET连接:".socket_strerror(socket_last_error());
   $this->debug_show($this->result_str);
   }
   else
   {
   exit("初始化失败,请检查您的网络连接和参数");
   }
   $this->result_str = "服务器应答:<font color=#cc0000>".socket_read ($this->socket, 1024)."</font>";
   $this->debug_show($this->result_str);


}
function debug_show($str)
{
   if($this->debug)
   {
   echo $str."<p>\r\n";
   }
}
function send($from,$to,$subject,$body)
{
   if($from == "" || $to == "")
   {
   exit("请输入信箱地址");
   }
   if($subject == "") $sebject = "无标题";
   if($body     == "") $body     = "无内容";
   $this->from     =   $from;
   $this->to       =   $to;
   $this->subject   =   $subject;
   $this->body     =   $body;

       //扬帆修改部分代码
   $All           = "From:<".$this->from.">\r\n";
   $All           .= "To:<".$this->to.">\r\n";
   $All           .= "Subject:".$this->subject."\r\n\r\n";
   $All           .= $this->body;
   /*
   如过把$All的内容再加处理,就可以实现发送MIME邮件了
   不过还需要加很多程序
   */


   //以下是和服务器会话
   $this->in       =   "EHLO HELO\r\n";
   $this->docommand();

   $this->in       =   "AUTH LOGIN\r\n";
   $this->docommand();

   $this->in       =   $this->user."\r\n";
   $this->docommand();

   $this->in       =   $this->pass."\r\n";
   $this->docommand();

// $this->in       =   "MAIL FROM:".$this->from."\r\n";
   $this->in       =   "MAIL FROM:<".$this->from.">\r\n";   //扬帆修改
   $this->docommand();

// $this->in       =   "RCPT TO:".$this->to."\r\n";
   $this->in       =   "RCPT TO:<".$this->to.">\r\n";     //扬帆修改
   $this->docommand();

   $this->in       =   "DATA\r\n";
   $this->docommand();

     $this->in       =   $All."\r\n.\r\n";
   $this->docommand();

   $this->in       =   "QUIT\r\n";
   $this->docommand();

   //结束,关闭连接



}
function docommand()
{
   socket_write ($this->socket, $this->in, strlen ($this->in));
   $this->debug_show("客户机命令:".$this->in);
   $this->result_str = "服务器应答:<font color=#cc0000>".socket_read ($this->socket, 1024)."</font>";
   $this->debug_show($this->result_str);
}
}
?>

相关热词搜索:发送邮件 Socket 验证
评论正在载入