麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > PHP > 正文

在PHP中用Socket發(fā)送電子郵件(二)

2019-09-08 23:11:21
字體:
供稿:網(wǎng)友

send_mail類的實現(xiàn)

  現(xiàn)在開始介紹我所編寫的發(fā)送郵件類。有了上面的預(yù)備知識了,下面就是實現(xiàn)了。 類的成員變量     var $lastmessage;    //記錄最后返回的響應(yīng)信息    var $lastact;        //最后的動作,字符串形式    var $welcome;        //用在HELO后面,歡迎用戶    var $debug;          //是否顯示調(diào)試信息    var $smtp;           //smtp服務(wù)器    var $port;           //smtp端口號    var $fp;             //socket句柄  其中,$lastmessage和$lastact用于記錄最后一次響應(yīng)信息及執(zhí)行的命令,當(dāng)出錯時,用戶可以使用它們。為了測試需要,我還定義了$debug變量,當(dāng)其值為true時,會在運行過程中顯示一些執(zhí)行信息,否則無任何輸出。$fp用于保存打開后的socket句柄。 類的構(gòu)造


   function send_mail($smtp, $welcome="", $debug=false)    {        if(empty($smtp)) die("SMTP cannt be NULL!");        $this->smtp=$smtp;        if(empty($welcome))        {            $this->welcome=gethostbyaddr("localhost");        }        else            $this->welcome=$welcome;        $this->debug=$debug;        $this->lastmessage="";        $this->lastact="";        $this->port="25";    }
  這個構(gòu)造函數(shù)主要完成一些初始值的判定及設(shè)置。$welcome用于HELO指令中,告訴服務(wù)器用戶的名字。HELO指令要求為機(jī)器名,但是不用也可以。如果用戶沒有給出$welcome,則自動查找本地的機(jī)器名。 顯示調(diào)試信息

1    function show_debug($message, $inout)2    {3        if ($this->debug)4        {5            if($inout=="in")    //響應(yīng)信息6            {7                $m='<< ';8            }9            else10                $m='>> ';11            if(!ereg("/n$", $message))12                $message .= "<br>";13            $message=nl2br($message);14            echo "<font color=#999999>${m}${message}</font>";15        }16    }
  這個函數(shù)用來顯示調(diào)試信息。可以在$inout中指定是上傳的指令還是返回的響應(yīng),如果為上傳指令,則使用"out";如果為返回的響應(yīng)則使用"in"。 第3行,判斷是否要輸出調(diào)試信息。
第5行,判斷是否為響應(yīng)信息,如果是,則在第7行將信息的前面加上"<< "來區(qū)別信息;否則在第10行加上">> "來區(qū)別上傳指令。
第11-12行,判斷信息串最后是否為換行符,如不是則加上HTML換行標(biāo)記。第13行將所以的換行符轉(zhuǎn)成HTML的換行標(biāo)記。
第14行,輸出整條信息,同時將信息顏色置為灰色以示區(qū)別。執(zhí)行一個命令

1    function do_command($command, $code)2    {3        $this->lastact=$command;4        $this->show_debug($this->lastact, "out");5        fputs ( $this->fp, $this->lastact );6        $this->lastmessage = fgets ( $this->fp, 512 );7        $this->show_debug($this->lastmessage, "in");8        if(!ereg("^$code", $this->lastmessage))9        {10            return false;11        }12        else13            return true;14    }
  在編寫socket處理部分發(fā)現(xiàn),一些命令的處理很相似,如HELO,MAIL FROM,RCPT TO,QUIT,DATA命令,都要求根據(jù)是否顯示調(diào)試信息將相關(guān)內(nèi)容顯示出來,同時對于返回的響應(yīng)碼,如果是期望的,則應(yīng)繼續(xù)處理,如果不是期望的,則應(yīng)中斷出理。所以為了清晰與簡化,專門對這些命令的處理編寫了一個通用處理函數(shù)。函數(shù)的參數(shù)中$code為期望的響應(yīng)碼,如果響應(yīng)碼與之相同則表示處理成功,否則出錯。 第3行,記錄最后執(zhí)行命令。
第4行,將上傳命令顯示出來。
第5行,則使用fputs真正向服務(wù)器傳換指令。
第6行,從服務(wù)器接收響應(yīng)信息將放在最后響應(yīng)消息變量中。
第7行,將響應(yīng)信息顯示出來。
第8行,判斷響應(yīng)信息是否期待的,如果是則第13行返回成功(true),否則在第10行返回失敗(false)。   這樣,這個函數(shù)一方面完成指令及信息的發(fā)送顯示功能,別一方面對返回的響應(yīng)判斷是否成功。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 成人 精品 | 色悠悠久久久久 | 精国品产一区二区三区有限公司 | 看中国一级毛片 | 一区二区三区小视频 | 欧美一级黄| 精品少妇v888av | 成人毛片av在线 | 黄色小视频免费在线观看 | 九九热精品在线播放 | 久久久一区二区精品 | 国产精品av久久久久久网址 | 奶子吧naiziba.cc免费午夜片在线观看 | 91看片免费版 | 亚洲精中文字幕二区三区 | 亚洲一区二区三区四区精品 | 一区二区三区欧美在线观看 | 欧美一级特黄aaaaaaa什 | 精品国产一区二区三 | 欧美人xxx| 日本黄色免费播放 | 国产精选电影免费在线观看网站 | 久久久三级免费电影 | 国产98色在线 | 国产午夜电影在线观看 | 色中色在线播放 | 国产欧美一区二区三区免费看 | 久草在线网址 | 成人不卡一区二区 | 国产小视频一区 | 九一免费国产 | 538在线精品 | 免费观看黄色影片 | 久久久一区二区三区精品 | 亚洲最大av网站 | 亚洲人成在线播放网站 | 舌头伸进添的我好爽高潮网站 | 国产成年人在线观看 | 国产一区二区三区视频在线 | 中文区永久区 | 成人18免费观看 |