日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

使用PHP的Socket寫的POP3類

瀏覽:27日期:2023-12-27 10:26:52

查看 POP3/SMTP 協議的時候想嘗試一下自己寫一個操作類,核心沒啥,就是使用 fsockopen ,然后寫入/接收數據,只實現了最核心的部分功能,當作是學習 Socket 操作的練手。其中參考了 RFC 2449和一個國外的簡單Web郵件系統 Uebimiau 的部分代碼,不過絕對沒有抄他滴,HOHO,絕對原創。如果你喜歡,請收藏,隨便修改,嗯,但是記得不要刪除偶類里的聲名,畢竟偶也是辛辛苦苦寫了好幾天吶。另外,歡迎自由發揮,改善或者修正這個類,希望能夠為你所用。代碼沒有認真仔細的調試,發現bug請自己修正,HOHO!

<?php /** * 類名:SocketPOPClient * 功能:POP3 協議客戶端的基本操作類 * 作者:heiyeluren <http://blog.csdn.net/heiyeshuwu> * 時間:2006-7-3 * 參考:RFC 2449, Uebimiau * 授權:BSD License */

class SocketPOPClient { var $strMessage;;;;;= ''; var $intErrorNum;= 0; var $bolDebug;;;;;= false; var $strEmail;;;;;= ''; var $strPasswd;;;;;= ''; var $strHost;;;;;= ''; var $intPort;;;;;= 110; var $intConnSecond;= 30; var $intBuffSize;= 8192;

var $resHandler;;;;;= NULL; var $bolIsLogin;;;;;= false; var $strRequest;;;;;= ''; var $strResponse;= ''; var $arrRequest;;;;;= array(); var $arrResponse;= array();

//--------------- // 基礎操作 //---------------

//構造函數 function SocketPOP3Client($strLoginEmail, $strLoginPasswd, $strPopHost='', $intPort='') { $this->strEmail;;;;;= trim(strtolower($strLoginEmail)); $this->strPasswd;= trim($strLoginPasswd); $this->strHost;;;;;= trim(strtolower($strPopHost));

if ($this->strEmail=='' || $this->strPasswd=='') { $this->setMessage('Email address or Passwd is empty', 1001); return false; } if (!preg_match('/^[w-]+(.[w-]+)*@[w-]+(.[w-]+)+$/i', $this->strEmail)) { $this->setMessage('Email address invalid', 1002); return false; } if ($this->strHost=='') { $this->strHost = substr(strrchr($this->strEmail, '@'), 1); } if ($intPort!='') { $this->intPort = $intPort; } $this->connectHost(); } //連接服務器 function connectHost() { if ($this->bolDebug) { echo 'Connection '.$this->strHost.' ...rn'; } if (!$this->getIsConnect()) { if ($this->strHost=='' || $this->intPort=='') { $this->setMessage('POP3 host or Port is empty', 1003); return false;;; } $this->resHandler = @fsockopen($this->strHost, $this->intPort, &$this->intErrorNum, &$this->strMessage, $this->intConnSecond); if (!$this->resHandler) { $strErrMsg = 'Connection POP3 host: '.$this->strHost.' failed'; $intErrNum = 2001; $this->setMessage($strErrMsg, $intErrNum); return false; } $this->getLineResponse(); if (!$this->getRestIsSucceed()) { return false; } } return true; }

//關閉連接 function closeHost() { if ($this->resHandler) { fclose($this->resHandler); } return true; }

//發送指令 function sendCommand($strCommand) { if ($this->bolDebug) { if (!preg_match('/PASS/', $strCommand)) { echo 'Send Command: '.$strCommand.'rn'; } else { echo 'Send Command: PASS ******rn'; }

} if (!$this->getIsConnect()) { return false; } if (trim($strCommand)=='') { $this->setMessage('Request command is empty', 1004); return false; } $this->strRequest = $strCommand.'rn'; $this->arrRequest[] = $strCommand; fputs($this->resHandler, $this->strRequest); return true; }

//提取響應信息第一行 function getLineResponse() { if (!$this->getIsConnect()) { return false; } $this->strResponse = fgets($this->resHandler, $this->intBuffSize); $this->arrResponse[] = $this->strResponse;

return $this->strResponse; }

//提取若干響應信息,$intReturnType是返回值類型, 1為字符串, 2為數組 function getRespMessage($intReturnType) { if (!$this->getIsConnect()) { return false; } if ($intReturnType == 1) { $strAllResponse = ''; while(!feof($this->resHandler)) { $strLineResponse = $this->getLineResponse(); if (preg_match('/^+OK/', $strLineResponse)) { continue; } if (trim($strLineResponse)=='.') { break; } $strAllResponse .= $strLineResponse; } return $strAllResponse; } else { $arrAllResponse = array(); while(!feof($this->resHandler)) { $strLineResponse = $this->getLineResponse(); if (preg_match('/^+OK/', $strLineResponse)) { continue; } if (trim($strLineResponse)=='.') { break; } $arrAllResponse[] = $strLineResponse; } return $arrAllResponse;;; } }

//提取請求是否成功 function getRestIsSucceed($strRespMessage='') { if (trim($responseMessage)=='') { if ($this->strResponse=='') { $this->getLineResponse(); } $strRespMessage = $this->strResponse; } if (trim($strRespMessage)=='') { $this->setMessage('Response message is empty', 2003); return false; } if (!preg_match('/^+OK/', $strRespMessage)) { $this->setMessage($strRespMessage, 2000); return false; } return true; }

//獲取是否已連接 function getIsConnect() { if (!$this->resHandler) { $this->setMessage('Nonexistent availability connection handler', 2002); return false; } return true; }

//設置消息 function setMessage($strMessage, $intErrorNum) { if (trim($strMessage)=='' || $intErrorNum=='') { return false; } $this->strMessage;= $strMessage; $this->intErrorNum;= $intErrorNum; return true; }

//獲取消息 function getMessage() { return $this->strMessage; }

//獲取錯誤號 function getErrorNum() { return $this->intErrorNum; }

//獲取請求信息 function getRequest() { return $this->strRequest; }

//獲取響應信息 function getResponse() { return $this->strResponse; }

//--------------- // 郵件原子操作 //---------------

//登錄郵箱 function popLogin() { if (!$this->getIsConnect()) { return false; } $this->sendCommand('USER '.$this->strEmail); $this->getLineResponse(); $bolUserRight = $this->getRestIsSucceed();

$this->sendCommand('PASS '.$this->strPasswd); $this->getLineResponse(); $bolPassRight = $this->getRestIsSucceed();

if (!$bolUserRight || !$bolPassRight) { $this->setMessage($this->strResponse, 2004); return false; } $this->bolIsLogin = true; return true; }

//退出登錄 function popLogout() { if (!$this->getIsConnect() && $this->bolIsLogin) { return false; } $this->sendCommand('QUIT'); $this->getLineResponse(); if (!$this->getRestIsSucceed()) { return false; } return true; }

//獲取是否在線 function getIsOnline() { if (!$this->getIsConnect() && $this->bolIsLogin) { return false; } $this->sendCommand('NOOP'); $this->getLineResponse(); if (!$this->getRestIsSucceed()) { return false; } return true; }

//獲取郵件數量和字節數(返回數組) function getMailSum($intReturnType=2) { if (!$this->getIsConnect() && $this->bolIsLogin) { return false; } $this->sendCommand('STAT'); $strLineResponse = $this->getLineResponse(); if (!$this->getRestIsSucceed()) { return false; } if ($intReturnType==1) { return;;$this->strResponse; } else { $arrResponse = explode(' ', $this->strResponse); if (!is_array($arrResponse) || count($arrResponse)<=0) { $this->setMessage('STAT command response message is error', 2006); return false; } return array($arrResponse[1], $arrResponse[2]); } }

//獲取指定郵件得Session Id function getMailSessId($intMailId, $intReturnType=2) { if (!$this->getIsConnect() && $this->bolIsLogin) { return false; } if (!$intMailId = intval($intMailId)) { $this->setMessage('Mail message id invalid', 1005); return false; } $this->sendCommand('UIDL '. $intMailId); $this->getLineResponse(); if (!$this->getRestIsSucceed()) { return false; } if ($intReturnType == 1) { return;;$this->strResponse; } else { $arrResponse = explode(' ', $this->strResponse); if (!is_array($arrResponse) || count($arrResponse)<=0) { $this->setMessage('UIDL command response message is error', 2006); return false; } return array($arrResponse[1], $arrResponse[2]); } }

//取得某個郵件的大小 function getMailSize($intMailId, $intReturnType=2) { if (!$this->getIsConnect() && $this->bolIsLogin) { return false; } $this->sendCommand('LIST '.$intMailId); $this->getLineResponse(); if (!$this->getRestIsSucceed()) { return false; } if ($intReturnType == 1) { return $this->strResponse; } else { $arrMessage = explode(' ', $this->strResponse); return array($arrMessage[1], $arrMessage[2]); } }

//獲取郵件基本列表數組 function getMailBaseList($intReturnType=2) { if (!$this->getIsConnect() && $this->bolIsLogin) { return false; } $this->sendCommand('LIST'); $this->getLineResponse(); if (!$this->getRestIsSucceed()) { return false; } return $this->getRespMessage($intReturnType); }

//獲取指定郵件所有信息,intReturnType是返回值類型,1是字符串,2是數組 function getMailMessage($intMailId, $intReturnType=1) { if (!$this->getIsConnect() && $this->bolIsLogin) { return false; } if (!$intMailId = intval($intMailId)) { $this->setMessage('Mail message id invalid', 1005); return false; } $this->sendCommand('RETR '. $intMailId); $this->getLineResponse(); if (!$this->getRestIsSucceed()) { return false; } return $this->getRespMessage($intReturnType); }

//獲取某郵件前指定行, $intReturnType 返回值類型,1是字符串,2是數組 function getMailTopMessage($intMailId, $intTopLines=10, $intReturnType=1) { if (!$this->getIsConnect() && $this->bolIsLogin) { return false; } if (!$intMailId=intval($intMailId) || !$intTopLines=int($intTopLines)) { $this->setMessage('Mail message id or Top lines number invalid', 1005); return false; } $this->sendCommand('TOP '. $intMailId .' '. $intTopLines); $this->getLineResponse(); if (!$this->getRestIsSucceed()) { return false; } return $this->getRespMessage($intReturnType); }

//刪除郵件 function delMail($intMailId) { if (!$this->getIsConnect() && $this->bolIsLogin) { return false; } if (!$intMailId=intval($intMailId)) { $this->setMessage('Mail message id invalid', 1005); return false; } $this->sendCommand('DELE '.$intMailId); $this->getLineResponse(); if (!$this->getRestIsSucceed()) { return false; } return true; }

//重置被刪除得郵件標記為未刪除 function resetDeleMail() { if (!$this->getIsConnect() && $this->bolIsLogin) { return false; } $this->sendCommand('RSET'); $this->getLineResponse(); if (!$this->getRestIsSucceed()) { return false; } return true; }

//--------------- // 調試操作 //---------------

//輸出對象信息 function printObject() { print_r($this); exit; }

//輸出錯誤信息 function printError() { echo '[Error Msg] : $strMessage;;<br>n'; echo '[Error Num] : $intErrorNum <br>n'; exit; }

//輸出主機信息 function printHost() { echo '[Host]; : $this->strHost <br>n'; echo '[Port]; : $this->intPort <br>n'; echo '[Email] : $this->strEmail <br>n'; echo '[Passwd] : ******** <br>n'; exit; }

//輸出連接信息 function printConnect() { echo '[Connect] : $this->resHandler <br>n'; echo '[Request] : $this->strRequest <br>n'; echo '[Response] : $this->strResponse <br>n'; exit; } }

?>

<? //測試代碼 //例如:$o = SocketPOP3Client('郵箱地址', '密碼', 'POP3服務器', 'POP3端口')

/* set_time_limit(0); $o = new SocketPOPClient('abc@126.com', '123456', 'pop.126.com', '110'); $o->popLogin(); print_r($o->getMailBaseList()); print_r($o->getMailSum(1)); print_r($o->getMailTopMessage(2, 2, 2)); $o->popLogout(); $o->closeHost(); $o->printObject(); */ ?>

http://dev.csdn.net/author/heiyeshuwu/b0fd8972a5e942ba81d6d9f5a10ec267.html

標簽: PHP
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
制服诱惑一区二区| 日韩国产网站| 欧美日韩亚洲一区三区| 亚洲视频电影在线| 亚洲精品第一| 国产精品玖玖玖在线资源| 欧美一区精品| 国产成人精选| 午夜精品久久久久久久久久蜜桃| 成人啊v在线| 亚洲免费播放| 日韩精品乱码av一区二区| 国产亚洲欧美日韩精品一区二区三区| 国产精品日本一区二区不卡视频| 精品亚洲自拍| 激情欧美日韩一区| 在线一区二区三区视频| 国产欧美一区二区三区精品观看 | 亚洲综合色婷婷在线观看| 日本中文字幕一区二区| 国产精品hd| 久久九九精品| 日本不卡视频一二三区| 免费一级欧美在线观看视频 | 黄色成人91| 免费久久99精品国产| 蜜桃一区二区三区在线观看| 日本精品久久| 成人久久一区| 亚州精品视频| 91综合网人人| 亚洲视频国产| 国产精品原创| 中文字幕av一区二区三区人| 精品网站aaa| 亚洲在线成人| 麻豆精品在线播放| 婷婷国产精品| 国产欧美一区二区精品久久久| 高清一区二区三区av| 亚洲精品国产嫩草在线观看| 吉吉日韩欧美| 亚洲一区中文| 亚洲精选av| 成人影视亚洲图片在线| 999国产精品永久免费视频app| 激情久久婷婷| 精品一区毛片| 日本久久一区| 国产一区二区三区亚洲综合| 在线亚洲免费| 国产精品99一区二区三| 日韩中文字幕不卡| 美女视频黄久久| 好吊日精品视频| 久久久久久夜| 日韩三级一区| 日韩精品电影一区亚洲| 日韩在线观看| 国产探花一区二区| 在线亚洲免费| 亚洲啊v在线| 亚洲免费专区| 国产不卡av一区二区| 在线观看一区| 国产高清不卡| 日韩影片在线观看| 国产精品高颜值在线观看| 亚洲视频二区| 欧美日韩国产亚洲一区| 蜜桃成人av| 国产成人免费精品| 国产精品yjizz视频网| 色爱av综合网| 美女视频黄久久| 国产精品v日韩精品v欧美精品网站 | **爰片久久毛片| 亚洲国产成人精品女人| 欧美www视频在线观看| 国产精品最新| 欧美日本三区| 日韩欧美久久| 丝袜诱惑制服诱惑色一区在线观看| 国产伦理久久久久久妇女| 香蕉视频成人在线观看| 香蕉成人av| 亲子伦视频一区二区三区| 国产成人精品三级高清久久91| 亚洲精品中文字幕99999| 日韩在线欧美| 中文字幕色婷婷在线视频| 欧美激情久久久久久久久久久| 国产三级一区| 国产美女久久| 国产精品对白| 麻豆视频一区| 国产一区二区三区久久| 久久影视三级福利片| 亚洲国产日韩欧美在线| 欧美色图国产精品| 国产99久久| 亚洲午夜一级| 国产精品美女| 国产农村妇女精品一二区| 午夜精品网站| 丝袜美腿一区二区三区| 免费在线视频一区| 日韩高清一区在线 | 精品免费av在线| 久久精品欧美一区| 国产综合激情| 久久麻豆精品| 亚洲免费一区二区| 亚洲视频国产| 国产精品综合| 国产日韩电影| 影音国产精品| 综合国产在线| 精品一区二区三区的国产在线观看| 久久久久免费| 午夜一级久久| 成人午夜精品| 国产精品伦一区二区| 欧美日韩在线观看视频小说| 五月激激激综合网色播| 久久99蜜桃| 国产精品极品| 国产成人久久精品麻豆二区 | 亚洲一区二区免费看| 亚洲精品综合| 中文国产一区| 国产精品观看| 蜜臀精品久久久久久蜜臀| 国产亚洲欧美日韩在线观看一区二区 | 国产一区二区三区自拍| 不卡在线一区二区| 久久最新视频| 日韩av网站在线免费观看| 国产精品乱战久久久| 成人午夜亚洲| 91成人精品视频| 97久久精品| 伊伊综合在线| 影音先锋久久精品| 精品无人区麻豆乱码久久久| 99精品电影| 在线 亚洲欧美在线综合一区| 日本精品另类| 啪啪国产精品| 欧美一区精品| 欧美亚洲激情| 青草国产精品久久久久久| 国产一区二区三区国产精品| 日韩天堂av| 国产精品自在| 91成人精品| 国产精品一区二区av日韩在线| 正在播放日韩精品| 99精品综合| 91成人在线精品视频| 欧美日韩视频网站| 好吊视频一区二区三区四区| 日本天堂一区| 亚洲福利免费| 久久99精品久久久野外观看| 性欧美69xoxoxoxo| 美女国产一区二区三区| 米奇777超碰欧美日韩亚洲| 国产日韩视频在线| 亚洲不卡系列| 国产精品视频一区二区三区 | 日本成人在线一区| 欧美精品资源| 91欧美极品| 欧美日韩国产传媒| 都市激情国产精品| 国产日韩欧美在线播放不卡| 亚洲专区在线| 久久91导航| 久久久久亚洲精品中文字幕| 先锋影音久久久| 久久久五月天| 精品一区二区三区免费看| 亚洲区欧美区| 99国产精品久久久久久久成人热| 成人亚洲精品| 国产精品三级| 日本久久二区| 欧美日韩激情| 日本不卡免费高清视频在线| 国产精品伊人| 亚洲三级在线| 亚洲激情五月| 99久久精品国产亚洲精品| 久久wwww| 97久久精品| 日韩一区二区三区精品| 一区免费视频| 免费久久久久久久久| 免费高潮视频95在线观看网站|