日本国产亚洲-日本国产一区-日本国产一区二区三区-日本韩国欧美一区-日本韩国欧美在线-日本韩国欧美在线观看

當前位置:雨林木風下載站 > 技術開發教程 > 詳細頁面

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

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

更新時間:2022-05-13 文章作者:未知 信息來源:網絡 閱讀次數:

send_mail類的實現
  現在開始介紹我所編寫的發送郵件類。有了上面的預備知識了,下面就是實現了。

類的成員變量

var $lastmessage; //記錄最后返回的響應信息
var $lastact; //最后的動作,字符串形式
var $welcome; //用在HELO后面,歡迎用戶
var $debug; //是否顯示調試信息
var $smtp; //smtp服務器
var $port; //smtp端口號
var $fp; //socket句柄

  其中,$lastmessage和$lastact用于記錄最后一次響應信息及執行的命令,當出錯時,用戶可以使用它們。為了測試需要,我還定義了$debug變量,當其值為true時,會在運行過程中顯示一些執行信息,否則無任何輸出。$fp用于保存打開后的socket句柄。

類的構造


--------------------------------------------------------------------------------
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";
}
--------------------------------------------------------------------------------
  這個構造函數主要完成一些初始值的判定及設置。$welcome用于HELO指令中,告訴服務器用戶的名字。HELO指令要求為機器名,但是不用也可以。如果用戶沒有給出$welcome,則自動查找本地的機器名。

顯示調試信息

--------------------------------------------------------------------------------
1 function show_debug($message, $inout)
2 {
3 if ($this->debug)
4 {
5 if($inout=="in") //響應信息
6 {
7 $m='<< ';
8 }
9 else
10 $m='>> ';
11 if(!ereg("\n$", $message))
12 $message .= "<br>";
13 $message=nl2br($message);
14 echo "<font color=#999999>${m}${message}</font>";
15 }
16 }
--------------------------------------------------------------------------------
  這個函數用來顯示調試信息?梢栽$inout中指定是上傳的指令還是返回的響應,如果為上傳指令,則使用"out";如果為返回的響應則使用"in"。

第3行,判斷是否要輸出調試信息。
第5行,判斷是否為響應信息,如果是,則在第7行將信息的前面加上"<< "來區別信息;否則在第10行加上">> "來區別上傳指令。
第11-12行,判斷信息串最后是否為換行符,如不是則加上HTML換行標記。第13行將所以的換行符轉成HTML的換行標記。
第14行,輸出整條信息,同時將信息顏色置為灰色以示區別。執行一個命令

--------------------------------------------------------------------------------
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 else
13 return true;
14 }
--------------------------------------------------------------------------------
  在編寫socket處理部分發現,一些命令的處理很相似,如HELO,MAIL FROM,RCPT TO,QUIT,DATA命令,都要求根據是否顯示調試信息將相關內容顯示出來,同時對于返回的響應碼,如果是期望的,則應繼續處理,如果不是期望的,則應中斷出理。所以為了清晰與簡化,專門對這些命令的處理編寫了一個通用處理函數。函數的參數中$code為期望的響應碼,如果響應碼與之相同則表示處理成功,否則出錯。

第3行,記錄最后執行命令。
第4行,將上傳命令顯示出來。
第5行,則使用fputs真正向服務器傳換指令。
第6行,從服務器接收響應信息將放在最后響應消息變量中。
第7行,將響應信息顯示出來。
第8行,判斷響應信息是否期待的,如果是則第13行返回成功(true),否則在第10行返回失敗(false)。

  這樣,這個函數一方面完成指令及信息的發送顯示功能,別一方面對返回的響應判斷是否成功。


溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

主站蜘蛛池模板: 九九在线精品视频xxx | 国产99精品免费视频看6 | 久久99国产一区二区三区 | 欧美整片在线观看 | 9久久99久久久精品齐齐综合色圆 | 激情欧美一区二区三区中文字幕 | 伊人婷婷| 免费毛片二级c片观看动漫 免费毛片视频 | 九一在线完整视频免费观看 | 欧美日本一 | 在线亚洲国产精品区 | 色综合色综合色综合色综合网 | 日韩精品永久免费播放平台 | 清风阁我爱干视频网 | 日韩www视频 | 91久久九九精品国产综合 | 日本a级做爰视频 | 欧洲精品视频在线观看 | 久久精品一区二区国产 | 亚洲成年网 | 亚洲18卡通动漫在线播放 | 国产成人精品视频一区二区不卡 | 精品国产免费人成高清 | 欧美人成毛片在线播放 | 日本不卡高清免费 | 一本到在线观看视频不卡 | 国产精自产拍久久久久久蜜 | 久久久久欧美精品网站 | 欧美一级特黄乱妇高清视频 | 男女啪啪成人免费网站 | 伊人久久大香线蕉75 | 永久免费毛片 | 色综合天天综合高清影视 | 国产免费啪视频观看网站 | 狠狠色丁香婷婷综合 | 亚洲精品久 | 视频在线国产 | 中文字幕精品亚洲人成在线 | 99青草青草久热精品视频 | 99久久在线 | 欧美另类视频 |