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

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

使用PHP的Socket寫的POP3類

瀏覽:33日期: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久久,三上悠亚国产精品一区二区三区
激情综合激情| 蜜桃久久久久| 动漫av一区| 欧美三级精品| 欧美一区二区三区高清视频| 欧美~级网站不卡| 午夜久久免费观看| 亚洲我射av| 国产精品香蕉| 日韩欧美一区二区三区免费观看| 好看不卡的中文字幕| 国产精品网站在线看| 欧美高清一区| 中文久久精品| 日韩精品亚洲专区| 国产精品亚洲二区| 中文在线资源| 国产亚洲一区在线| 69堂免费精品视频在线播放| 国产精品对白| 视频福利一区| 综合激情网站| 精品中国亚洲| 欧美日韩国产欧| 日本成人一区二区| 国产精品久久久久久久久妇女| 欧美亚洲精品在线| 日韩av不卡在线观看| 欧美激情日韩| 欧美日韩国产高清电影| 青青草国产精品亚洲专区无| 免费在线成人| 一区二区亚洲精品| 国产精品激情| 美女日韩在线中文字幕| 久久久久久久久成人| 日韩午夜av| 在线天堂中文资源最新版| 天堂va在线高清一区| japanese国产精品| 国产精品www994| 蜜臀va亚洲va欧美va天堂| 中文字幕人成乱码在线观看| 美国三级日本三级久久99| 国产美女高潮在线观看| 日韩极品在线观看| 亚洲女人av| 不卡一区综合视频| 久久久亚洲一区| 成人精品视频| 国产精品亚洲欧美日韩一区在线| 国产高清一区| 偷拍精品精品一区二区三区| 国产精品久久久久久久久久白浆| 久久午夜影院| 日韩精品久久久久久久电影99爱| 日韩精品成人| 精品欧美一区二区三区在线观看| 亚洲三级av| 成人精品亚洲| 伊人久久高清| 四虎国产精品免费观看| 亚洲自啪免费| 欧美日韩视频免费观看| 日韩va亚洲va欧美va久久| 麻豆亚洲精品| 免费日韩视频| 免费久久99精品国产| 欧美日韩四区| 99久久久久国产精品| 精品国产美女a久久9999| 亚洲精选av| 日本免费一区二区视频| 99视频一区| 不卡在线一区| 五月天激情综合网| 久久精品国语| 欧美日韩一二三四| 色婷婷久久久| 婷婷亚洲综合| 日韩欧美中文字幕在线视频| 天海翼精品一区二区三区| 亚洲三级在线| 精品视频高潮| 亚洲香蕉网站| 亚洲精品伊人| 正在播放日韩精品| 视频一区二区三区中文字幕| 久久国产亚洲精品| 欧美大黑bbbbbbbbb在线| 欧美日韩国产高清| 视频一区二区中文字幕| 国产图片一区| 四虎成人av| 久久电影一区| 国产精品欧美三级在线观看| 国产精品白丝一区二区三区| 成人台湾亚洲精品一区二区 | 日韩欧美一区二区三区免费看| 四虎884aa成人精品最新| 亚洲免费影视| 免费一级欧美片在线观看网站| 久久中文字幕av一区二区不卡| 国产视频一区三区| 91综合网人人| 欧美日本一区| 久久美女精品| 男人的天堂久久精品| 精品视频黄色| 日本成人在线不卡视频| 精品免费av在线| 国产精品亲子伦av一区二区三区| 亚洲午夜精品久久久久久app| 国产欧美亚洲精品a| 日韩精品一区二区三区免费观影| 欧美永久精品| 中文字幕人成乱码在线观看| 麻豆9191精品国产| 日韩中文影院| 久久精品资源| 国产麻豆一区| 一区二区不卡| 欧美一区=区| 欧美亚洲国产激情| 日韩在线视频精品| 国模大尺度视频一区二区| 日韩三区四区| 日韩欧美激情| 亚洲午夜国产成人| 亚洲影院天堂中文av色| 视频精品一区二区| 欧洲av不卡| 精品国产亚洲一区二区三区| 国产伦理一区| 国产精品久久久久77777丨| 国产探花一区在线观看| 69堂精品视频在线播放| 清纯唯美亚洲综合一区| 91成人精品观看| 麻豆国产精品777777在线| 国内精品麻豆美女在线播放视频| 国产欧美日韩一区二区三区四区 | 激情综合婷婷| 国产在视频一区二区三区吞精| 麻豆精品在线观看| 久久一区亚洲| 狂野欧美性猛交xxxx| 国产精品日本一区二区三区在线| 国产精品www.| 欧美日本久久| 精品久久久亚洲| 在线亚洲成人| 国产欧美自拍| 丝袜诱惑一区二区| 视频在线观看一区| 国产麻豆一区二区三区| 欧美激情视频一区二区三区在线播放| 欧美亚洲免费| 欧美成a人免费观看久久| 亚洲综合另类| 久久中文字幕一区二区| 国产一区二区精品福利地址| 五月天综合网站| 国产精品久久亚洲不卡| 99久久亚洲精品蜜臀| 日韩高清中文字幕一区| 欧美国产另类| 美女91精品| 久久一区亚洲| 亚洲黄色免费看| 在线亚洲精品| 四虎8848精品成人免费网站| 欧美日韩国产一区精品一区| 欧美三级第一页| 久久一区二区三区喷水| 国产极品一区| 亚洲精品乱码日韩| 鲁鲁在线中文| 日本aⅴ亚洲精品中文乱码| 99精品综合| 国产精品mm| 亚洲欧洲av| 亚洲精品三级| 免费观看在线综合| 久久高清一区| 影院欧美亚洲| 亚洲天堂黄色| 成人午夜在线| 免费亚洲婷婷| 久久精品国产久精国产| 青青国产91久久久久久| 亚洲色图综合| 在线一区二区三区视频| 中文精品视频| 成人va天堂| 国产999精品在线观看| **爰片久久毛片| 国产日产高清欧美一区二区三区 | 国产精品99久久精品| 国产极品嫩模在线观看91精品|