=波波日志 > PHP/apache/Perl > 一个简单的PHP发送邮件的类=

[转]一个简单的PHP发送邮件的类

smtp.class.php
============================
+展开
-PHP

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_r;          //真实的源信箱,一般与smtp服务器的用户名一样,否则可能由于smtp服务器的设置而发送不成功 
var $mailformat=0; //邮件格式 0=普通文本 1=html邮件
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    = "无内容"

$All          = "From:".$from."\r\n"
$All          .= "To:".$to."\r\n"
$All          .= "Subject:".$subject."\r\n"
if($this->mailformat==1) $All.= "Content-Type: text/html;\r\n"
else $All .= "Content-Type: text/plain;\r\n"
$All          .= "charset=gb2312\r\n\r\n"
$All          .= $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();

if(!eregi("235",$this->result_str)){
   $this->result_str = "smtp 认证失败";
   $this->debug_show($this->result_str);
   return 0;
}

$this->in       =  "MAIL FROM:".$from."\r\n"
$this->docommand(); 

$this->in       =  "RCPT TO:".$to."\r\n"
$this->docommand(); 

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

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

if(!eregi("250",$this->result_str)){
   $this->result_str = "邮件发送失败";
   $this->debug_show($this->result_str);
   return 0;
}

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

//结束,关闭连接 
return 1;


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); 


//end class



先把文件内上面程序里的这些内容填进去,如:
+展开
-PHP
var $host="smtp.sina.com.cn"//主机 
var $port="25"//端口 一般为25 
var $user="users"//SMTP认证的帐号 
var $pass="users123; //认证密码


然后把这个文件放到你网站下,只要你网站的程序访问的到就行,.
然后要用到发邮件的程序里包含进来 如: include('smtp.class.php');
然后在这个发邮件的程序里用
+展开
-PHP
$mails=new smtp_mail();
if($mail->send("发信人地址","收信人邮箱地址","主题","内容")){
echo "发送成功!";
}else{
echo "邮件服务器忙,请稍候再试试";
}


类别:PHP/apache/Perl 作者:转载 日期:2009-06-29 【评论:1】 
 

  • 日期:2010-8-17 17:03:51  IP:220.249.*.*
    看看,学习学习
    管理员回复(2010-8-17 18:58:17)
    O(∩_∩)O~

发表留言
  • *昵称:
  • 头像:
  • 电子邮件: [留下您的邮件,方便管理员回复您。]
  • 个人网站: *验证码:
声明:本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载或引用的作品侵犯了您的权利,请通知我们,我们会及时删除!
Powered by showbo,©2012,桂ICP备05005887号 京公网安备1101055090