您好,欢迎访问一九零五行业门户网

php 邮件类,php邮件_PHP教程

php 邮件类,php邮件编写一个用php socket 发送邮件的类,简单好用,当用到php程序发送邮件时,
而在163服务器中,可以在rcpt命令中还可以验证163邮箱是否存在,还有很多用处,
我现在暂时还没想到。
记录下,有需要的朋友可以参考下
host = $conf['host'];
            $this->port = $conf['port'];
            $this->user = $conf['user'];
            $this->password = $conf['password'];
$this->rcpt = $rcpt;
$this->to_name   = $header['to_name'];
            $this->from_name = $header['from_name'];
            $this->subject   = $header['subject'];
            $this->html      = $html;
$this->body = base64_encode($body);
} catch (exception $e) {
            throw new exception($e->getmessage());            
        }
}
public function connect() {
        $this->connection = @fsockopen($this->host, '25', $errno, $errstr, 10);
        if (!$this->connection) {            
            throw new exception('connect failed!');
        }
        $greet = $this->callback_code();
}
public function helo() {
        if($this->is_connect() &&
            $this->send_data('helo ' . $this->host) &&
            $this->callback_code() == 250
            ) {
             return true;
        } else {
            throw new exception($this->get_callback_msg_lastest());
}
    }
public function send_data($cmd) {
        if (is_resource($this->connection)) {
            return @fwrite($this->connection, $cmd.\r\n, strlen($cmd) + 2);
        }
    }
public function auth(){
        if ($this->is_connect() &&
            $this->send_data('auth login') && $this->callback_code() == 334 &&
            $this->send_data(base64_encode($this->user)) && $this->callback_code() == 334 &&
            $this->send_data(base64_encode($this->password)) && $this->callback_code() == 235 ) {    
            return true;
        } else {
            throw new exception($this->get_callback_msg_lastest());            
        }
    }
public function mail() {
if ($this->is_connect() &&
            $this->send_data(mail from:user>) &&
            $this->callback_code() == 250
            ) {
            return true;
        } else  {
           throw new exception($this->get_callback_msg_lastest());            
        }
   }
public function is_connect() {
        return is_resource($this->connection);
    }
public function callback_code() {
        if ($this->is_connect()) {
            $msg = fgets($this->connection);
            if (!empty($msg)) {
                $code = substr($msg, 0, strpos($msg, ' '));
            } else {
                return '';
            }
            $this->msg[] = $msg;
            return $code;
        }
    }
public function get_callback_msg_lastest() {
        return end($this->msg);
    }
public function rcpt($rcpt) {
        if ($this->is_connect() &&
            $this->send_data(rcpt to:) &&
            $this->callback_code() == 250
            ) {
            return true;
        } else  {
            throw new exception($this->get_callback_msg_lastest());            
        }
    }
public function data() {
        if ($this->is_connect() &&
            $this->send_data('data') &&
            $this->callback_code() == 354) {
            return true;
        } else {
            throw new exception($this->get_callback_msg_lastest());
        }
    }
public function send_mail() {
try {
$this->connect();
            $this->helo();
            $this->auth();
            $this->mail();
if (is_array($this->rcpt)) {
                foreach ($this->rcpt as $rcpt) {
                    $this->rcpt($rcpt);
                }
} else {
                $this->rcpt($this->rcpt);
            }
$this->data();
$header = str_replace(\r\n . '.', \r\n . '..', trim(implode(\r\n, $this->get_header())));
            $body   = str_replace(\r\n . '.', \r\n . '..', $this->body);
            $body   = substr($body, 0, 1) == '.' ? '.' . $body : $body;
$this->send_data($header);
            $this->send_data('');
            $this->send_data($body);            
            $this->send_data('.');
if ($this->callback_code()  != 250) {
                throw new exception('send mail falied!');                
            }
            return true;
        } catch (exception $e) {
            throw new exception($e->getmessage());            
        }
}
//只能检测同一邮件服务器上email address
    public  function is_email_exist() {
}
public function get_header() {
$header = array();
        $content_type = $this->html ? 'text/html;' : 'text/plain;' ;
$headers [] = 'date: ' . gmdate('d, j m y h:i:s') . ' +0000';
        $to_mail = is_array($this->rcpt) ? implode(',', $this->rcpt) : $this->rcpt;
        $headers [] = 'to: ' . '=? utf8?b?' . base64_encode($this->to_name) . '?=' . ' ';
        $headers [] = 'from: ' . '=?utf8?b?' . base64_encode($this->from_name) . '?=' . ' user . '>';
        $headers [] = 'subject: ' . '=?utf8?b?' . base64_encode($this->subject) . '?=';
        $headers [] = 'content-type:'.$content_type . ' charset=utf8; format=flowed';
        $headers [] = 'content-transfer-encoding: base64';
        $headers [] = 'content-disposition: inline';
return $headers;
    }
}
/**
* 用函数封装类
*/
function send_mail($conf, $rcpt, $header, $body) {
$mail = new mail($conf, $rcpt, $header, $body);
if ($mail->send_mail()) {
        echo 'send email successfully!';
    } else {
        echo 'falied!';
    }
}
$conf = array(
    'host'     => 'smtp.163.com',
    'port'     => '25',
    'user'     => 'z1298703836@163.com',
    'password' => 'zeiwei123',
     );
$rcpt = array(
    'z1298703836@sina.com',
    'wei.zen@baisonmail.com'
    );
$header = array(
    'to_name'   => 'willstang',
    'from_name' => 'sinawill',
    'subject'   => 'tst of reo ',
    );
$body = '
sfsfsd';
$mail = new mail($conf, $rcpt, $header, $body);
$mail->send_mail();
echo '';
print_r($mail->msg); 
熟悉邮件发送的过程,它的stmp协议,
还有一些发送的细节,如:发送的内容分为两部分, 一部分在头部,另一部分是email的正文,
http://www.bkjia.com/phpjc/965030.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/965030.htmltecharticlephp 邮件类,php邮件 编写一个用php socket 发送邮件的类,简单好用,当用到php程序发送邮件时, 而在163服务器中,可以在rcpt命令中还可以验...

其它类似信息

推荐信息