测试通过,PHP的一个完整SMTP类
分类:高并发

smtp.php

smtp.php
复制代码 代码如下:

smtp.class.php 那些是类把他做保留到贰个文书中.
复制代码 代码如下:
class smtp
{
/* Public Variables */
var $smtp_port;
var $time_out;
var $host_name;
var $log_file;
var $relay_host;
var $debug;
var $auth;
var $user;
var $pass;
/* Private Variables */
var $sock;
/* Constractor */
function smtp($relay_host = "", $smtp_port = 25,$auth = false,$user,$pass)
{
$this->debug = FALSE;
$this->smtp_port = $smtp_port;
$this->relay_host = $relay_host;
$this->time_out = 30; //is used in fsockopen()
#
$this->auth = $auth;//auth
$this->user = $user;
$this->pass = $pass;
#
$this->host_name = "localhost"; //is used in HELO command
$this->log_file = "";
$this->sock = FALSE;
}
/* Main Function */
function sendmail($to, $from, $subject = "", $body = "", $mailtype, $cc = "", $bcc = "", $additional_headers = "")
{
$mail_from = $this->get_address($this->strip_comment($from));
$body = ereg_replace("(^|(rn))(\.)", "\1.\3", $body);
$header .= "MIME-Version:1.0rn";
if($mailtype=="HTML"){
$header .= "Content-Type:text/htmlrn";
}
$header .= "To: ".$to."rn";
if ($cc != "") {
$header .= "Cc: ".$cc."rn";
}
$header .= "From: $from;rn";
$header .= "Subject: ".$subject."rn";
$header .= $additional_headers;
$header .= "Date: ".date("r")."rn";
$header .= "X-Mailer:By Redhat (PHP/".phpversion().")rn";
list($msec, $sec) = explode(" ", microtime());
$header .= "Message-ID: ;rn";
$TO = explode(",", $this->strip_comment($to));
if ($cc != "") {
$TO = array_merge($TO, explode(",", $this->strip_comment($cc)));
}
if ($bcc != "") {
$TO = array_merge($TO, explode(",", $this->strip_comment($bcc)));
}
$sent = TRUE;
foreach ($TO as $rcpt_to) {
$rcpt_to = $this->get_address($rcpt_to);
if (!$this->smtp_sockopen($rcpt_to)) {
$this->log_write("Error: Cannot send email to ".$rcpt_to."n");
$sent = FALSE;
continue;
}
if ($this->smtp_send($this->host_name, $mail_from, $rcpt_to, $header, $body)) {
$this->log_write("E-mail has been sent to ;n");
} else {
$this->log_write("Error: Cannot send email to ;n");
$sent = FALSE;
}
fclose($this->sock);
$this->log_write("Disconnected from remote hostn");
}
return $sent;
}
/* Private Functions */
function smtp_send($helo, $from, $to, $header, $body = "")
{
if (!$this->smtp_putcmd("HELO", $helo)) {
return $this->smtp_error("sending HELO command");
}
#auth
if($this->auth){
if (!$this->smtp_putcmd("AUTH LOGIN", base64_encode($this->user))) {
return $this->smtp_error("sending HELO command");
}
if (!$this->smtp_putcmd("", base64_encode($this->pass))) {
return $this->smtp_error("sending HELO command");
}
}
#
if (!$this->smtp_putcmd("MAIL", "FROM:;")) {
return $this->smtp_error("sending MAIL FROM command");
}
if (!$this->smtp_putcmd("RCPT", "TO:;")) {
return $this->smtp_error("sending RCPT TO command");
}
if (!$this->smtp_putcmd("DATA")) {
return $this->smtp_error("sending DATA command");
}
if (!$this->smtp_message($header, $body)) {
return $this->smtp_error("sending message");
}
if (!$this->smtp_eom()) {
return $this->smtp_error("sending ;;.;; [EOM]");
}
if (!$this->smtp_putcmd("QUIT")) {
return $this->smtp_error("sending QUIT command");
}
return TRUE;
}
function smtp_sockopen($address)
{
if ($this->relay_host == "") {
return $this->smtp_sockopen_mx($address);
} else {
return $this->smtp_sockopen_relay();
}
}
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;
}
function smtp_sockopen_mx($address)
{
$domain = ereg_replace("^.+@([^@]+)$", "\1", $address);
if (!@getmxrr($domain, $MXHOSTS)) {
$this->log_write("Error: Cannot resolve MX "".$domain.""n");
return FALSE;
}
foreach ($MXHOSTS as $host) {
$this->log_write("Trying to ".$host.":".$this->smtp_port."n");
$this->sock = @fsockopen($host, $this->smtp_port, $errno, $errstr, $this->time_out);
if (!($this->sock && $this->smtp_ok())) {
$this->log_write("Warning: Cannot connect to mx host ".$host."n");
$this->log_write("Error: ".$errstr." (".$errno.")n");
continue;
}
$this->log_write("Connected to mx host ".$host."n");
return TRUE;
}
$this->log_write("Error: Cannot connect to any mx hosts (".implode(", ", $MXHOSTS).")n");
return FALSE;
}
function smtp_message($header, $body)
{
fputs($this->sock, $header."rn".$body);
$this->smtp_debug(">; ".str_replace("rn", "n".">; ", $header."n>; ".$body."n>; "));
return TRUE;
}
function smtp_eom()
{
fputs($this->sock, "rn.rn");
$this->smtp_debug(". [EOM]n");
return $this->smtp_ok();
}
function smtp_ok()
{
$response = str_replace("rn", "", fgets($this->sock, 512));
$this->smtp_debug($response."n");
if (!ereg("^[23]", $response)) {
fputs($this->sock, "QUITrn");
fgets($this->sock, 512);
$this->log_write("Error: Remote host returned "".$response.""n");
return FALSE;
}
return TRUE;
}
function smtp_putcmd($cmd, $arg = "")
{
if ($arg != "") {
if($cmd=="") $cmd = $arg;
else $cmd = $cmd." ".$arg;
}
fputs($this->sock, $cmd."rn");
$this->smtp_debug(">; ".$cmd."n");
return $this->smtp_ok();
}
function smtp_error($string)
{
$this->log_write("Error: Error occurred while ".$string.".n");
return FALSE;
}
function log_write($message)
{
$this->smtp_debug($message);
if ($this->log_file == "") {
return TRUE;
}
$message = date("M d H:i:s ").get_current_user()."[".getmypid()."]: ".$message;
if (!@file_exists($this->log_file) || !($fp = @fopen($this->log_file, "a"))) {
$this->smtp_debug("Warning: Cannot open log file "".$this->log_file.""n");
return FALSE;
}
flock($fp, LOCK_EX);
fputs($fp, $message);
fclose($fp);
return TRUE;
}
function strip_comment($address)
{
$comment = "\([^()]*\)";
while (ereg($comment, $address)) {
$address = ereg_replace($comment, "", $address);
}
return $address;
}
function get_address($address)
{
$address = ereg_replace("([ trn])+", "", $address);
$address = ereg_replace("^.*;.*$", "\1", $address);
return $address;
}
function smtp_debug($message)
{
if ($this->debug) {
echo $message;
}
}
}
function sendmail($smtpserver,$smtpuser,$smtppass,$smtpemailto,$smtpusermail, $mailsubject, $mailbody){
$smtp = new smtp($smtpserver,25,true,$smtpuser,$smtppass);
//$smtp->debug = TRUE;
$smtp->sendmail($smtpemailto, $smtpusermail, $mailsubject, $mailbody, "HTML");
}
//such as
//sendmail("smtp.126.com","test@126.com","password","1034555083@qq.com","test@126.com","title","body");
?>

?phpclass smtp

class smtp
{
    /* Public Variables */
    var $smtp_port;
    var $time_out;
    var $host_name;
    var $log_file;
    var $relay_host;
    var $debug;
    var $auth;
    var $user;
    var $pass;

测量检验代码:
复制代码 代码如下:

{

    /* Private Variables */ 
    var $sock;

//ok的邮箱发送。
include "smtp.class.php";
//$smtpserver = "SMTP.163.com"; //您的smtp服务器的地点
$smtpserver="smtp.163.com";
$port =25; //smtp服务器的端口,平常是 25
$smtpuser = "你的信箱@163.com"; //您登陆smtp服务器的客商名
$smtppwd = "你邮箱的密码"; //您登陆smtp服务器的密码
$mailtype = "TXT"; //邮件的体系,可选值是 TXT 或 HTML ,TXT 代表是纯文本的邮件,HTML 表示是 html格式的邮件
$sender = "你的邮箱@163.com";
//发件人,常常要与你登入smtp服务器的客商名($smtpuser卡塔尔国相似,不然或然会因为smtp服务器的装置诱致发送退步
$smtp = new smtp($smtpserver,$port,true,$smtpuser,$smtppwd,$sender);
$smtp->debug = true; //是不是张开调节和测量试验,只在测量试验程序时利用,正式使用时请将此行注释
$to = "你要发给的十一分人的邮箱地址"; //收件人
$subject = "你好";
$body = "你发送的剧情 ";
$send=$smtp->sendmail($to,$sender,$subject,$body,$mailtype);

/* Public Variables */

    /* Constractor */
    function smtp($relay_host = "", $smtp_port = 25,$auth = false,$user,$pass)
    {
        $this->debug = FALSE;
        $this->smtp_port = $smtp_port;
        $this->relay_host = $relay_host;
        $this->time_out = 30; //is used in fsockopen() 
        $this->auth = $auth;//auth
        $this->user = $user;
        $this->pass = $pass;
        $this->host_name = "localhost"; //is used in HELO command 
        $this->log_file = "";
        $this->sock = FALSE;
}

if($send==1){
echo "邮件发送成功";
}else{
echo "邮件发送退步
";
//echo "原因:".$this->smtp->logs;
}
?>

var $smtp_port;

    /* Main Function */
    function sendmail($to, $from, $subject = "", $body = "", $mailtype, $cc = "", $bcc = "", $additional_headers = "")
    {
        $mail_from = $this->get_address($this->strip_comment($from));
        $body = ereg_replace("(^|(rn))(.)", "1.3", $body);
        $header .= "MIME-Version:1.0rn";
        if($mailtype=="HTML")
        {
            $header .= "Content-Type:text/htmlrn";
        }
        $header .= "To: ".$to."rn";
        if ($cc != "") 
        {
            $header .= "Cc: ".$cc."rn";
        }
        $header .= "From: $fromrn";
        $header .= "Subject: ".$subject."rn";
        $header .= $additional_headers;
        $header .= "Date: ".date("r")."rn";
        $header .= "X-Mailer:By Redhat (PHP/".phpversion().")rn";
        list($msec, $sec) = explode(" ", microtime());
        $header .= "Message-ID: rn";
        $TO = explode(",", $this->strip_comment($to));

var $time_out;

        if ($cc != "") 
        {
            $TO = array_merge($TO, explode(",", $this->strip_comment($cc)));
            }
        if ($bcc != "") 
        {
            $TO = array_merge($TO, explode(",", $this->strip_comment($bcc)));
        }
        $sent = TRUE;
        foreach ($TO as $rcpt_to) 
        {
            $rcpt_to = $this->get_address($rcpt_to);
            if (!$this->smtp_sockopen($rcpt_to)) 
            {
                $this->log_write("Error: Cannot send email to ".$rcpt_to."n");
                $sent = FALSE;
                continue;
            }
            if ($this->smtp_send($this->host_name, $mail_from, $rcpt_to, $header, $body)) 
            {
                $this->log_write("E-mail has been sent to n");
            } 
            else 
            {
                $this->log_write("Error: Cannot send email to n");
                $sent = FALSE;
            }
            fclose($this->sock);
            $this->log_write("Disconnected from remote hostn");
        }
        return $sent;
    }

var $host_name;

    /* Private Functions */
    function smtp_send($helo, $from, $to, $header, $body = "")
    {
        if (!$this->smtp_putcmd("HELO", $helo)) 
        {
            return $this->smtp_error("sending HELO command");
        }

var $log_file;

        #auth
        if($this->auth)
        {
            if (!$this->smtp_putcmd("AUTH LOGIN", base64_encode($this->user))) 
            {
                return $this->smtp_error("sending HELO command");
            }
            if (!$this->smtp_putcmd("", base64_encode($this->pass))) 
            {
                return $this->smtp_error("sending HELO command");
            }
        }
        if (!$this->smtp_putcmd("MAIL", "FROM:")) 
        {
            return $this->smtp_error("sending MAIL FROM command");
        }
        if (!$this->smtp_putcmd("RCPT", "TO:")) 
        {
            return $this->smtp_error("sending RCPT TO command");
        }
        if (!$this->smtp_putcmd("DATA"))
        {
            return $this->smtp_error("sending DATA command");
        }
        if (!$this->smtp_message($header, $body)) 
        {
            return $this->smtp_error("sending message");
        }
        if (!$this->smtp_eom())
        {
            return $this->smtp_error("sending . [EOM]");
        }
        if (!$this->smtp_putcmd("QUIT")) 
        {
            return $this->smtp_error("sending QUIT command");
        }
        return TRUE;
    }

var $relay_host;

    function smtp_sockopen($address)
    {
        if ($this->relay_host == "") 
        {
            return $this->smtp_sockopen_mx($address);
        } 
        else
        {
            return $this->smtp_sockopen_relay();
        }
    }

var $debug;

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

var $auth;

    function smtp_sockopen_mx($address)
    {
        $domain = ereg_replace("^.+@([^@]+)$", "1", $address);
        if (!@getmxrr($domain, $MXHOSTS)) 
        {
            $this->log_write("Error: Cannot resolve MX "".$domain.""n");
            return FALSE;
        }
        foreach ($MXHOSTS as $host) 
        {
            $this->log_write("Trying to ".$host.":".$this->smtp_port."n");
            $this->sock = @fsockopen($host, $this->smtp_port, $errno, $errstr, $this->time_out);
            if (!($this->sock && $this->smtp_ok())) 
            {
                $this->log_write("Warning: Cannot connect to mx host ".$host."n");
                $this->log_write("Error: ".$errstr." (".$errno.")n");
                continue;
            }
            $this->log_write("Connected to mx host ".$host."n");
            return TRUE;
        }
        $this->log_write("Error: Cannot connect to any mx hosts (".implode(", ", $MXHOSTS).")n");
        return FALSE;
    }

var $user;

    function smtp_message($header, $body)
    {
        fputs($this->sock, $header."rn".$body);
        $this->smtp_debug("> ".str_replace("rn", "n"."> ", $header."n> ".$body."n> "));
        return TRUE;
    }

var $pass;

    function smtp_eom()
    {
        fputs($this->sock, "rn.rn");
        $this->smtp_debug(". [EOM]n");
        return $this->smtp_ok();
    }

/* Private Variables */ var $sock;

    function smtp_ok()
    {
        $response = str_replace("rn", "", fgets($this->sock, 512));
        $this->smtp_debug($response."n");
        if (!ereg("^[23]", $response)) 
        {
            fputs($this->sock, "QUITrn");
            fgets($this->sock, 512);
            $this->log_write("Error: Remote host returned "".$response.""n");
            return FALSE;
        }
        return TRUE;
    }

/* Constractor */

    function smtp_putcmd($cmd, $arg = "")
    {
        if ($arg != "") 
        {
            if($cmd=="") 
            {
                $cmd = $arg;
            }
            else
            {
                $cmd = $cmd." ".$arg;
            }
        }
        fputs($this->sock, $cmd."rn");
        $this->smtp_debug("> ".$cmd."n");
        return $this->smtp_ok();
    }

function smtp($relay_host = "", $smtp_port = 25,$auth = false,$user,$pass)

    function smtp_error($string)
    {
        $this->log_write("Error: Error occurred while ".$string.".n");
        return FALSE;
    }

{

    function log_write($message)
    {
        $this->smtp_debug($message);
        if ($this->log_file == "")
        {
            return TRUE;
        }
        $message = date("M d H:i:s ").get_current_user()."[".getmypid()."]: ".$message;
        if (!@file_exists($this->log_file) || !($fp = @fopen($this->log_file, "a"))) 
        {
            $this->smtp_debug("Warning: Cannot open log file "".$this->log_file.""n");
            return FALSE;;
        }
        flock($fp, LOCK_EX);
        fputs($fp, $message);
        fclose($fp);
        return TRUE;
    }

$this-debug = FALSE;

    function strip_comment($address)
    {
        $comment = "([^()]*)";
        while (ereg($comment, $address)) 
        {
            $address = ereg_replace($comment, "", $address);
        }
        return $address;
    }

$this-smtp_port = $smtp_port;

    function get_address($address)
    {
        $address = ereg_replace("([ trn])+", "", $address);
        $address = ereg_replace("^.*.*$", "1", $address);
        return $address;
    }

$this-relay_host = $relay_host;

    function smtp_debug($message)
    {
        if ($this->debug) 
        {
            echo $message;
        }
    }

$this-time_out = 30; //is used in fsockopen() #

}
?>

$this-auth = $auth;//auth

测验程序 复制代码 代码如下:

$this-user = $user;

/*
那是一个测量试验程序!!!
*/
require("smtp.php");
##########################################
$smtpserver = "smtp.163.com";//SMTP服务器
$smtpserverport = 25;//SMTP服务器端口
$smtpusermail = "reterry123@163.com";//SMTP服务器的客商邮箱
$smtpemailto = "dxytools@gmail.com";//发送给什么人
$smtpuser = "reterry123";//SMTP服务器的客户帐号
$smtppass = "014040001";//SMTP服务器的客户密码
$mailsubject = "中文";//邮件核心
$mailbody = "

$this-pass = $pass;

中文

测验下能淤泥新春感";//邮件内容
$mailtype = "HTML";//邮件格式(HTML/TXT),TXT为文本邮件
##########################################
$smtp = new smtp($smtpserver,$smtpserverport,true,$smtpuser,$smtppass卡塔尔国;//那在这之中的三个true是象征使用身份验证,不然不利用地点验证.
$smtp->debug = TRUE;//是不是出示发送的调节和测验消息
$smtp->sendmail($smtpemailto, $smtpusermail, $mailsubject, $mailbody, $mailtype);
?>

#

$this-host_name = "localhost"; //is used in HELO command $this-log_file = "";

$this-sock = FALSE;

}

/* Main Function */

function sendmail($to, $from, $subject = "", $body = "", $mailtype, $cc = "", $bcc = "", $additional_headers = "")

{

$mail_from = $this-get_address($this-strip_comment($from));

$body = ereg_replace("(^|(/r/n))(/.)", "/1./3", $body);

$header .= "MIME-Version:1.0/r/n";

if($mailtype=="HTML"){

$header .= "Content-Type:text/html/r/n";

}

$header .= "To: ".$to."/r/n";

if ($cc != "") {

$header .= "Cc: ".$cc."/r/n";

}

$header .= "From: $from".$from."/r/n";

$header .= "Subject: ".$subject."/r/n";

$header .= $additional_headers;

$header .= "Date: ".date("r")."/r/n";

$header .= "X-Mailer:By Redhat (PHP/".phpversion().")/r/n";

list($msec, $sec) = explode(" ", microtime());

$header .= "Message-ID: ".date("YmdHis", $sec).".".($msec*1000000).".".$mail_from."/r/n";

$TO = explode(",", $this-strip_comment($to));

if ($cc != "") {

$TO = array_merge($TO, explode(",", $this-strip_comment($cc)));

}

if ($bcc != "") {

$TO = array_merge($TO, explode(",", $this-strip_comment($bcc)));

}

$sent = TRUE;

foreach ($TO as $rcpt_to) {

$rcpt_to = $this-get_address($rcpt_to);

if (!$this-smtp_sockopen($rcpt_to)) {

$this-log_write("Error: Cannot send email to ".$rcpt_to."/n");

$sent = FALSE;

continue;

}

if ($this-smtp_send($this-host_name, $mail_from, $rcpt_to, $header, $body)) {

$this-log_write("E-mail has been sent to ".$rcpt_to."/n");

} else {

$this-log_write("Error: Cannot send email to ".$rcpt_to."/n");

$sent = FALSE;

}

fclose($this-sock);

$this-log_write("Disconnected from remote host/n");

}

return $sent;

}

/* Private Functions */

function smtp_send($helo, $from, $to, $header, $body = "")

{

if (!$this-smtp_putcmd("HELO", $helo)) {

return $this-smtp_error("sending HELO command");

}

#auth

if($this-auth){

if (!$this-smtp_putcmd("AUTH LOGIN", base64_encode($this-user))) {

return $this-smtp_error("sending HELO command");

}

if (!$this-smtp_putcmd("", base64_encode($this-pass))) {

return $this-smtp_error("sending HELO command");

}

}

#

if (!$this-smtp_putcmd("MAIL", "FROM:".$from."")) {

return $this-smtp_error("sending MAIL FROM command");

}

if (!$this-smtp_putcmd("RCPT", "TO:".$to."")) {

return $this-smtp_error("sending RCPT TO command");

}

if (!$this-smtp_putcmd("DATA")) {

return $this-smtp_error("sending DATA command");

}

if (!$this-smtp_message($header, $body)) {

return $this-smtp_error("sending message");

}

if (!$this-smtp_eom()) {

return $this-smtp_error("sending CRLF.CRLF [EOM]");

}

if (!$this-smtp_putcmd("QUIT")) {

return $this-smtp_error("sending QUIT command");

}

return TRUE;

}

function smtp_sockopen($address)

{

if ($this-relay_host == "") {

return $this-smtp_sockopen_mx($address);

} else {

return $this-smtp_sockopen_relay();

}

}

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

}

function smtp_sockopen_mx($address)

{

$domain = ereg_replace("^.+@([^@]+)$", "/1", $address);

if (!@getmxrr($domain, $MXHOSTS)) {

$this-log_write("Error: Cannot resolve MX /"".$domain."/"/n");

return FALSE;

}

foreach ($MXHOSTS as $host) {

$this-log_write("Trying to ".$host.":".$this-smtp_port."/n");

$this-sock = @fsockopen($host, $this-smtp_port, $errno, $errstr, $this-time_out);

if (!($this-sock && $this-smtp_ok())) {

$this-log_write("Warning: Cannot connect to mx host ".$host."/n");

$this-log_write("Error: ".$errstr." (".$errno.")/n");

continue;

}

$this-log_write("Connected to mx host ".$host."/n");

return TRUE;

}

$this-log_write("Error: Cannot connect to any mx hosts (".implode(", ", $MXHOSTS).")/n");

return FALSE;

}

function smtp_message($header, $body)

{

fputs($this-sock, $header."/r/n".$body);

$this-smtp_debug(" ".str_replace("/r/n", "/n"." ", $header."/n ".$body."/n "));

return TRUE;

}

function smtp_eom()

{

fputs($this-sock, "/r/n./r/n");

$this-smtp_debug(". [EOM]/n");

return $this-smtp_ok();

}

function smtp_ok()

{

$response = str_replace("/r/n", "", fgets($this-sock, 512));

$this-smtp_debug($response."/n");

if (!ereg("^[23]", $response)) {

fputs($this-sock, "QUIT/r/n");

fgets($this-sock, 512);

$this-log_write("Error: Remote host returned /"".$response."/"/n");

return FALSE;

}

return TRUE;

}

function smtp_putcmd($cmd, $arg = "")

{

if ($arg != "") {

if($cmd=="") $cmd = $arg;

else $cmd = $cmd." ".$arg;

}

fputs($this-sock, $cmd."/r/n");

$this-smtp_debug(" ".$cmd."/n");

return $this-smtp_ok();

}

function smtp_error($string)

{

$this-log_write("Error: Error occurred while ".$string."./n");

return FALSE;

}

function log_write($message)

{

$this-smtp_debug($message);

if ($this-log_file == "") {

return TRUE;

}

$message = date("M d H:i:s ").get_current_user()."[".getmypid()."]: ".$message;

if (log_file">!@file_exists($this-log_file) || !($fp = @fopen($this-log_file, "a"))) {

$this-smtp_debug("Warning: Cannot open log file /"".$this-log_file."/"/n");

return FALSE;;

}

flock($fp, LOCK_EX);

fputs($fp, $message);

fclose($fp);

return TRUE;

}

function strip_comment($address)

{

$comment = "/([^()]*/)";

while (ereg($comment, $address)) {

$address = ereg_replace($comment, "", $address);

}

return $address;

}

function get_address($address)

{

$address = ereg_replace("([ /t/r/n])+", "", $address);

$address = ereg_replace("^.*(.+).*$", "/1", $address);

return $address;

}

function smtp_debug($message)

{

if ($this-debug) {

echo $message;

}

}

}

?

test.php

?php

/*

这是三个测量试验程序!!!

请依据表明设置好之下的参数,以下是以tom.com的顾客为例设置好的.

*/

require("sm.php");

##########################################

$smtpserver = "smtp.tom.com";//SMTP服务器

$smtpserverport =25;//SMTP服务器端口

$smtpusermail = "someone@tom.com";//SMTP服务器的顾客邮箱

$smtpemailto = "jack@knowsky.com";//发送给哪个人

$smtpuser = "someone";//SMTP服务器的顾客帐号

$smtppass = "someonepass";//SMTP服务器的客户密码

$mailsubject = "Test Subject";//邮件宗旨

$mailbody = "h1This is a test mail/h1";//邮件内容

$mailtype = "HTML";//邮件格式,TXT为文本邮件

##########################################

$smtp = new smtp($smtpserver,$smtpserverport,true,$smtpuser,$smtppass卡塔尔国;//那其间的贰个true是意味着使用身份验证,不然不接纳地方验证.

$smtp-debug = TRUE;//是不是出示发送的调节和测量检验新闻

$smtp-sendmail($smtpemailto, $smtpusermail, $mailsubject, $mailbody, $mailtype);

?

本文由10bet手机官网发布于高并发,转载请注明出处:测试通过,PHP的一个完整SMTP类

上一篇:Oracle的列操作,表中列的修改 下一篇:一个程序下载的管理程序_php基础_脚本之家,一个程序下载的管理程序
猜你喜欢
热门排行
精彩图文