class SMTPMail{
private $user;
private $host;
private $port = 25;
private $pass;
private $socket;
public function __construct($host,$port,$user,$pass){
$this->host = $host;
$this->port = $port;
$this->user = $user;
$this->pass = $pass;
$this->socket = fsockopen($this->host,$this->port,$error,$errorstr,10);
if(!$this->socket){
exit("Error number:$error,Message:$errorstr");die;
}
$response = fgets($this->socket);
if(strstr($response,'220')===false){
exit('error');
}
}
private function do_command($cmd,$code){
fputs($this->socket,$cmd);
$response = fgets($this->socket,512);
if(strstr($response, "$code")===false){
exit($response);
return false;
}
return true;
}
public function send_email($from,$to,$suject,$body){
$msg = 'From:'.$from."\r\n";
$msg .= 'To:'.$to."\r\n";
$msg .= "Subject:".$suject."\r\n";
$msg .= "Content -Type: text/plain;\r\n";
$msg .= "charset=gb2312\r\n\r\n";
$msg .= $body;
//发送信息
$this->do_command("HELO smtp.qq.com\r\n",250);
$this->do_command("AUTH LOGIN\r\n",334);
$this->do_command(base64_encode($this->user)."\r\n",334);
$this->do_command(base64_encode($this->pass)."\r\n",235);
$this->do_command("MAIL FROM:<".$from.">\r\n",250);
$this->do_command("RCPT TO:<".$to.">\r\n",250);
$this->do_command("DATA\r\n",354);
$this->do_command($msg."\r\n.\r\n",250);
$this->do_command("QUIT\r\n",221);
return true;
}
}
PHP 基于SMTP协议+socket 简单的邮件发送
最新推荐文章于 2021-03-23 22:16:59 发布