中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

PHP支持發(fā)送HTML格式郵件的發(fā)送類

2018-07-20    來(lái)源:open-open

容器云強(qiáng)勢(shì)上線!快速搭建集群,上萬(wàn)Linux鏡像隨意使用
    <?php  
    /** 
    * 郵件發(fā)送類 
    * 支持發(fā)送純文本郵件和HTML格式的郵件 
    * @example 
    * $config = array( 
    *       "from" => "*****", 
    *       "to" => "***", 
    *       "subject" => "test", 
    *       "body" => "<b>test</b>", 
    *       "username" => "***", 
    *       "password" => "****", 
    *       "isHTML" => true 
    *   ); 
    * 
    * $mail = new MySendMail(); 
    * 
    * $mail->setServer("smtp.126.com"); 
    * 
    * $mail->setMailInfo($config); 
    * if(!$mail->sendMail()) { 
    *   echo $mail->error(); 
    *   return 1; 
    * } 
    */  
    class MySendMail{  
        /** 
        * @var 郵件傳輸代理用戶名 
        * @access private 
        */  
        private $_userName;  
       
        /** 
        * @var 郵件傳輸代理密碼 
        * @access private 
        */  
        private $_password;  
       
        /** 
        * @var 郵件傳輸代理服務(wù)器地址 
        * @access protected 
        */  
        protected $_sendServer;  
       
        /** 
        * @var 郵件傳輸代理服務(wù)器端口 
        * @access protected 
        */  
        protected $_port=25;  
       
        /** 
        * @var 發(fā)件人 
        * @access protected 
        */  
        protected $_from;  
       
        /** 
        * @var 收件人 
        * @access protected 
        */  
        protected $_to;  
       
        /** 
        * @var 主題 
        * @access protected 
        */  
        protected $_subject;  
       
        /** 
        * @var 郵件正文 
        * @access protected 
        */  
        protected $_body;  
       
        /** 
        * @var 是否是HTML格式的郵件 
        * @access protected 
        */  
        protected $_isHTML=true;  
       
        /** 
        * @var socket資源 
        * @access protected 
        */  
        protected $_socket;  
       
        /** 
        * @var 錯(cuò)誤信息 
        * @access protected 
        */  
        protected $_errorMessage;  
       
        public function __construct($from="", $to="", $subject="", $body="", $server="", $username="", $password="",$isHTML="", $port="") {  
            if(!empty($from)){  
                $this->_from = $from;  
            }  
            if(!empty($to)){  
                $this->_to = $to;  
            }  
            if(!empty($subject)){  
                $this->_subject = $subject;  
            }  
            if(!empty($body)){  
                $this->_body = $body;  
            }  
            if(!empty($isHTML)){  
                $this->_isHTML = $isHTML;  
            }  
            if(!empty($server)){  
                $this->_sendServer = $server;  
            }  
            if(!empty($port)){  
                $this->_port = $port;  
            }  
            if(!empty($username)){  
                $this->_userName = $username;  
            }  
            if(!empty($password)){  
                $this->_password = $password;  
            }  
        }  
       
        /** 
        * 設(shè)置郵件傳輸代理 
        * @param string $server 代理服務(wù)器的ip或者域名 
        * @param int $port 代理服務(wù)器的端口,smtp默認(rèn)25號(hào)端口 
        * @param int $localPort 本地端口 
        * @return boolean 
        */  
        public function setServer($server, $port=25) {  
            if(!isset($server) || empty($server) || !is_string($server)) {  
                $this->_errorMessage = "first one is an invalid parameter";  
                return false;  
            }  
            if(!is_numeric($port)){  
                $this->_errorMessage = "first two is an invalid parameter";  
                return false;  
            }  
            $this->_sendServer = $server;  
            $this->_port = $port;  
            return true;  
        }  
       
        /** 
        * 設(shè)置郵件 
        * @access public 
        * @param array $config 郵件配置信息 
        * 包含郵件發(fā)送人、接收人、主題、內(nèi)容、郵件傳輸代理的驗(yàn)證信息 
        * @return boolean 
        */  
        public function setMailInfo($config) {  
            if(!is_array($config) || count($config) < 6){  
                $this->_errorMessage = "parameters are required";  
                return false;  
            }  
       
            $this->_from = $config['from'];  
            $this->_to = $config['to'];  
            $this->_subject = $config['subject'];  
            $this->_body = $config['body'];  
            $this->_userName = $config['username'];  
            $this->_password = $config['password'];  
            if(isset($config['isHTML'])){  
                $this->_isHTML = $config['isHTML'];  
            }  
       
            return true;  
        }  
       
        /** 
        * 發(fā)送郵件 
        * @access public 
        * @return boolean 
        */  
        public function sendMail() {  
            $command = $this->getCommand();  
            $this->socket();  
               
            foreach ($command as $value) {  
                if($this->sendCommand($value[0], $value[1])) {  
                    continue;  
                }  
                else{  
                    return false;  
                }  
            }  
               
            $this->close(); //其實(shí)這里也沒(méi)必要關(guān)閉,smtp命令:QUIT發(fā)出之后,服務(wù)器就關(guān)閉了連接,本地的socket資源會(huì)自動(dòng)釋放  
            echo 'Mail OK!';  
            return true;  
        }  
       
        /** 
        * 返回錯(cuò)誤信息 
        * @return string 
        */  
        public function error(){  
            if(!isset($this->_errorMessage)) {  
                $this->_errorMessage = "";  
            }  
            return $this->_errorMessage;  
        }  
       
        /** 
        * 返回mail命令 
        * @access protected 
        * @return array 
        */  
        protected function getCommand() {  
            if($this->_isHTML) {  
                $mail = "MIME-Version:1.0\r\n";  
                $mail .= "Content-type:text/html;charset=utf-8\r\n";  
                $mail .= "FROM:test<" . $this->_from . ">\r\n";  
                $mail .= "TO:<" . $this->_to . ">\r\n";  
                $mail .= "Subject:" . $this->_subject ."\r\n\r\n";  
                $mail .= $this->_body . "\r\n.\r\n";  
            }  
            else{  
                $mail = "FROM:test<" . $this->_from . ">\r\n";  
                $mail .= "TO:<" . $this->_to . ">\r\n";  
                $mail .= "Subject:" . $this->_subject ."\r\n\r\n";  
                $mail .= $this->_body . "\r\n.\r\n";  
            }  
            $command = array(  
                    array("HELO sendmail\r\n", 250),  
                    array("AUTH LOGIN\r\n", 334),  
                    array(base64_encode($this->_userName) . "\r\n", 334),  
                    array(base64_encode($this->_password) . "\r\n", 235),  
                    array("MAIL FROM:<" . $this->_from . ">\r\n", 250),  
                    array("RCPT TO:<" . $this->_to . ">\r\n", 250),  
                    array("DATA\r\n", 354),  
                    array($mail, 250),  
                    array("QUIT\r\n", 221)  
            );  
            return $command;  
        }  
       
        /** 
        * @access protected 
        * @param string $command 發(fā)送到服務(wù)器的smtp命令 
        * @param int $code 期望服務(wù)器返回的響應(yīng)嗎 
        * @param boolean 
        */  
        protected function sendCommand($command, $code) {  
            echo 'Send command:' . $command . ',expected code:' . $code . '<br />';  
            //發(fā)送命令給服務(wù)器  
            try{  
                if(socket_write($this->_socket, $command, strlen($command))){  
                    //讀取服務(wù)器返回  
                    $data = trim(socket_read($this->_socket, 1024));  
                    echo 'response:' . $data . '<br /><br />';  
                    if($data) {  
                        $pattern = "/^".$code."/";  
                        if(preg_match($pattern, $data)) {  
                            return true;  
                        }  
                        else{  
                            $this->_errorMessage = "Error:" . $data . "|**| command:";  
                            return false;  
                        }  
                    }  
                    else{  
                        $this->_errorMessage = "Error:" . socket_strerror(socket_last_error());  
                        return false;  
                    }  
                }  
                else{  
                    $this->_errorMessage = "Error:" . socket_strerror(socket_last_error());  
                    return false;  
                }  
            }catch(Exception $e) {  
                $this->_errorMessage = "Error:" . $e->getMessage();  
            }  
        }  
       
        /** 
        * 建立到服務(wù)器的網(wǎng)絡(luò)連接 
        * @access private 
        * @return boolean 
        */  
        private function socket() {  
            if(!function_exists("socket_create")) {  
                $this->_errorMessage = "extension php-sockets must be enabled";  
                return false;  
            }  
            //創(chuàng)建socket資源  
            $this->_socket = socket_create(AF_INET, SOCK_STREAM, getprotobyname('tcp'));  
               
            if(!$this->_socket) {  
                $this->_errorMessage = socket_strerror(socket_last_error());  
                return false;  
            }  
       
            //連接服務(wù)器  
            if(!socket_connect($this->_socket, $this->_sendServer, $this->_port)) {  
                $this->_errorMessage = socket_strerror(socket_last_error());  
                return false;  
            }  
            socket_read($this->_socket, 1024);  
               
            return true;  
        }  
       
        /** 
        * 關(guān)閉socket 
        * @access private 
        * @return boolean 
        */  
        private function close() {  
            if(isset($this->_socket) && is_object($this->_socket)) {  
                $this->_socket->close();  
                return true;  
            }  
            $this->_errorMessage = "no resource can to be close";  
            return false;  
        }  
    }  
       
       
    /**************************** Test ***********************************/  
    $config = array(  
            "from" => "********@163.com",  
            "to" => "******@163.com",  
            "subject" => "test",  
            "body" => "<b style='font-size:30px;'>test</b>",  
            "username" => "******",  
            "password" => "password",  
        );  
       
    $mail = new MySendMail();  
       
    $mail->setServer("smtp.163.com");  
       
    $mail->setMailInfo($config);  
    if(!$mail->sendMail()){  
        echo $mail->error();  
        return 1;  
    }  

標(biāo)簽: 代理服務(wù)器 代理服務(wù)器地址 服務(wù)器 服務(wù)器地址 服務(wù)器端 網(wǎng)絡(luò) 域名

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請(qǐng)與原作者聯(lián)系。

上一篇:C/C++實(shí)現(xiàn)RGB565轉(zhuǎn)換成BMP位圖

下一篇:C++時(shí)間復(fù)雜度為O(n)隨機(jī)生成不重復(fù)的數(shù)代碼