<?php
set_time_limit(360); 
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=true) 

$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."\n"; 
$All          .= "To:".$this->to."\n"; 
$All          .= "Subject:".$this->subject."\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->docommand(); $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); 

} $smtp  =   new smtp_mail("smtp.21cn.com","25","r51movie","movie123"); 
 
$smtp->send("[email protected]","[email protected]","tessss","密码!"); 
?>

解决方案 »

  1.   

    接收者[email protected]被拉入黑名单了,所以不让你发送
      

  2.   

    换个smtp服务器试试看 我用的163的没问题 每秒可以发10多封 虽然他有连接限制
      

  3.   

    smtp把你封了,或者封了你的IP
      

  4.   

    我也换了服务器,也不行。换了163和TOM的
      

  5.   

    服务器应答:554 this mail is rejected by antispam system, id=aisp1-smtp.21999.1166928088&date=2006122410-------------------------------------------------------------你到底干什么了啊?看到这个信息,感觉是你的IP被列为了垃圾邮件集散服务器,所以给bang了
    纯粹的感觉……