POPÐÒé¼ò½é
¡¡¡¡±¾ÎļòҪ˵Ã÷ÁËͨ¹ýPOP3ÐÒéÊÕÈ¡Óʼþ¡¢MIMEÓʼþµÄ½âÂëµÄÔÀí£»Õë¶ÔÊÕÈ¡ºÍMIME½âÂ룬ÌṩÁËÁ½¸öʵÓõÄPHPÀ࣬²¢ÌṩÁËʹÓõÄÑùÀý¡£·ÖΪÓʼþÊÕÈ¡¡¢MIME½âÂëÁ½¸ö²¿·Ö¡£ÕâÀïÎÒÃÇÏÈÏòÄú½éÉÜÓʼþµÄÊÕÈ¡£¬½âÂ벿·Ö»áÔÚÒÔºóµÄÎÄÕÂÖÐΪ¸÷λÏêϸµÄ½éÉÜ£¬¾´Çë¹Ø×¢¡£
¡¡¡¡
¡¡¡¡ÏÖÔÚInternetÉÏ×î´óµÄÓ¦ÓÃÓ¦¸ÃÊÇ·ÇEmailĪÊôÁË£¬ÎÒÃÇÿÌ춼ϰ¹ßÓÚÿÌìͨ¹ýEmail½øÐн»Á÷£¬¸÷´óÍøÕ¾Ò²¼¸ºõ¶¼ÍƳöÁË×Ô¼ºµÄ»ùÓÚWEB µÄÃâ·ÑÓʼþϵͳ¡£ÔÚ±¾ÎÄÀ±ÊÕß½«½éÉÜһЩEmailʵÏÖµÄһЩÔÀí¡£Í¬Ê±ÎÒÃǼÙÉèÄã¶ÔÓÚPHPµÄ±à³ÌÓÐÒ»¶¨µÄ»ù´¡£¬¶ÔÓÚTCP/IPÐÒéÒ²ÓÐÒ»¶¨µÄÁ˽⡣
POP ÐÒé¼ò½é
¡¡¡¡POPµÄÈ«³ÆÊÇ Post Office Protoco £¬¼´ÓʾÖÐÒ飬ÓÃÓÚµç×ÓÓʼþµÄ½ÓÊÕ£¬ÏÖÔÚ³£ ÓõÄÊǵÚÈý°æ £¬¼ò³ÆÎª POP3¡£Í¨¹ýPOPÐÒ飬¿Í»§»úµÇ¼µ½·þÎñÆ÷ÉϺ󣬿ÉÒÔ¶Ô×Ô¼ºµÄÓʼþ½øÐÐɾ³ý£¬»òÊÇÏÂÔØµ½±¾µØ£¬ÏÂÔØºó£¬µç×ÓÓʼþ¿Í»§Èí¼þ¾Í¿ÉÒÔÔÚ±¾µØ¶ÔÓʼþ½øÐÐÐ޸ġ¢É¾³ýµÈ¡£ÁíÍâÒ»ÖÖÓÃÓÚ½ÓÊÕÐżþµÄÓʼþÊÇ IMAP ÐÒ飬ÏÖÔÚ·¢Õ¹ºÜ¿ì£¬ÔÚ±¾ÎÄÖУ¬ÎÒÃÇÔݲ»ÌÖÂÛ¡£
¡¡¡¡POP·þÎñÆ÷Ò»°ãʹÓõÄÊÇTCPµÄ110ºÅ¶Ë¿Ú£¬Èç¹ûÄãÓõÄÊÇFoxmailµÄ»°£¬ÔÚÆäÊÕÓʼþµÄʱºò£¬Äã¿ÉÒÔ¿´µ½ÆäÐÅÏ¢Ìáʾ´°¿ÚÓÐÕâôһЩÃüÁ
¡¡¡¡¡°ÕýÔÚÁ¬½Óµ½¡¡62.123.23.123:110";
¡¡¡¡"USER BOSS_CH";
¡¡¡¡"PASS..............";
¡¡¡¡ÏÂÃæÈÃÎÒÃÇÀ´¿´Ò»¶Î Óë POP3 ·þÎñÆ÷¶Ô»°µÄʵ¼:
¡¡¡¡telenet pop.china.com 110
¡¡¡¡+OK AIMC POP service (mail2.china.com) is ready.
¡¡¡¡USER boss_ch
¡¡¡¡+OK Please enter password for user <boss_ch>.
¡¡¡¡PASS ******
¡¡¡¡+OK boss_ch has 1 messages (750 octets)
¡¡¡¡STAT
¡¡¡¡+OK 1 750
¡¡¡¡LIST
¡¡¡¡+OK 1 messages (750 octets)
¡¡¡¡1 750
¡¡¡¡RETR 1
¡¡¡¡+OK 750 octets
¡¡¡¡Received: from smtp2.ptt.js.cn([202.102.24.37]) by china.com(JetMail 2.5.3.0)
¡¡¡¡with SMTP id jm4839cc4227; Sat, 23 Sep 2000 05:31:21 -0000
¡¡¡¡Received: from chenjunqing ([61.155.120.6]) by smtp2.ptt.js.cn
¡¡¡¡(Netscape Messaging Server 4.15) with SMTP id G1BRHJ03.V07 for
¡¡¡¡<boss_ch@china.com>; Sat, 23 Sep 2000 13:34:31 +0800
¡¡¡¡Date: Sat, 23 Sep 2000 13:34:18 +0800
¡¡¡¡From: =?ISO-8859-1?Q?=B3=C2=BF=A1=C7=E5?= <Boss_ch@netease.com>
¡¡¡¡To: boss_ch@china.com <boss_ch@china.com>
¡¡¡¡Subject: =?ISO-8859-1?Q?=D3=CA=BC=FE=CA=BE=C0=FD?=
¡¡¡¡X-mailer: FoxMail 3.1 [cn]
¡¡¡¡Mime-Version: 1.0
¡¡¡¡Content-Type: text/plain; charset="GB2312"
¡¡¡¡Content-Transfer-Encoding: 8bit
¡¡¡¡Message-ID: <G1BRHJ03.V07@smtp2.ptt.js.cn>
¡¡¡¡ÄúºÃ£¡
¡¡¡¡¡¡¡¡ÕâÊÇÒ»¸öÓʼþµÄСʾÀý
¡¡¡¡QUIT
¡¡¡¡+OK Pop server at <mail2.china.com> signing off.
¡¡¡¡ÒÔ϶Լ¸¸ö³£ÓõÄPOP3ÃüÁî×÷Ò»¸ö¼òµ¥µÄ½éÉÜ¡¡£º
¡¡¡¡ÃüÁî ¡¡¡¡¡¡²ÎÊý¡¡¡¡¡¡ ״̬¡¡¡¡¡¡ ÃèÊö
¡¡¡¡------------------------------------------
¡¡¡¡USER¡¡¡¡¡¡ username ¡¡ÈÏ¿É ¡¡¡¡¡¡´ËÃüÁîÓëÏÂÃæµÄpassÃüÁîÈô³É¹¦£¬½«µ¼ÖÂ״̬ת»»
¡¡¡¡PASS¡¡¡¡¡¡ password¡¡ ÈÏ¿É
¡¡¡¡APOP ¡¡¡¡¡¡Name,Digest ÈÏ¿É ¡¡¡¡¡¡DigestÊÇMD5ÏûÏ¢ÕªÒª
¡¡¡¡------------------------------------------
¡¡¡¡STAT¡¡¡¡¡¡ None ¡¡¡¡¡¡´¦Àí ¡¡¡¡¡¡ÇëÇó·þÎñÆ÷·¢»Ø¹ØÓÚÓÊÏäµÄͳ¼Æ×ÊÁÏ£¬ÈçÓʼþ×ÜÊýºÍ×Ü×Ö½ÚÊý
¡¡¡¡UIDL ¡¡¡¡¡¡[Msg#] ¡¡¡¡´¦Àí ¡¡¡¡¡¡·µ»ØÓʼþµÄΨһ±êʶ·û£¬POP3»á»°µÄÿ¸ö±êʶ·û¶¼½«ÊÇΨһµÄ
¡¡¡¡LIST¡¡¡¡¡¡ [Msg#]¡¡¡¡ ´¦Àí ¡¡¡¡¡¡·µ»ØÓʼþÊýÁ¿ºÍÿ¸öÓʼþµÄ´óС
¡¡¡¡RETR ¡¡¡¡¡¡[Msg#] ¡¡¡¡´¦Àí¡¡¡¡¡¡ ·µ»ØÓɲÎÊý±êʶµÄÓʼþµÄÈ«²¿Îı¾
¡¡¡¡DELE ¡¡¡¡¡¡[Msg#] ¡¡¡¡´¦Àí¡¡¡¡¡¡ ·þÎñÆ÷½«ÓɲÎÊý±êʶµÄÓʼþ±ê¼ÇΪɾ³ý£¬ÓÉquitÃüÁîÖ´ÐÐ
¡¡¡¡RSET¡¡¡¡¡¡ None¡¡¡¡¡¡ ´¦Àí ¡¡¡¡¡¡·þÎñÆ÷½«ÖØÖÃËùÓбê¼ÇΪɾ³ýµÄÓʼþ£¬ÓÃÓÚ³·ÏûDELEÃüÁî
¡¡¡¡TOP ¡¡¡¡¡¡[Msg#] ¡¡¡¡ ´¦Àí¡¡¡¡¡¡ ·þÎñÆ÷½«·µ»ØÓɲÎÊý±êʶµÄÓʼþǰnÐÐÄÚÈÝ£¬n±ØÐëÊÇÕýÕûÊý
¡¡¡¡NOOP ¡¡¡¡¡¡None ¡¡¡¡¡¡´¦Àí ¡¡¡¡¡¡·þÎñÆ÷·µ»ØÒ»¸ö¿Ï¶¨µÄÏìÓ¦£¬²»×öÈκβÙ×÷¡£
¡¡¡¡------------------------------------------
¡¡¡¡QUIT ¡¡¡¡¡¡None ¡¡¡¡¡¡¸üРÍ˳ö
ÓÃPHPʵÏÖPOP3ÊÕÈ¡ÓʼþµÄÀà
¡¡¡¡ÏÖÔÚÈÃÎÒÃÇÀ´ÓÃPHPʵÏÖÒ»¸öͨ¹ýPOP3ÐÒéÊÕÈ¡ÐżþµÄÀà°É£¬Õâ¸öÀàÖÐËùÓõ½µÄһЩsock²Ù×÷µÄº¯Êý£¬²»Áí×öÌØÊâ˵Ã÷£¬Çë²Î¿¼phpµÄÓйØ×ÊÁÏ¡£Í¨¹ýÕâ¸öʵÀý£¬ÏàÐÅÄãÒ²»áºÍÎÒÒ»Ñù£¬¸Ð¾õµ½PHPÖжÔÓÚsock²Ù×÷µÄÁé»î¡¢·½±ãºÍ¹¦ÄܵÄÇ¿´ó¡£
¡¡¡¡Ê×ÏÈ£¬ÎÒÃÇÀ´ËµÃ÷Ò»ÏÂÕâ¸öÀàÖÐÐèÒªÓõ½µÄһЩÄÚ²¿³ÉÔ±±äÁ¿£º£¨ÕâЩ±äÁ¿Ó¦¸Ã¶¼ÊǶÔÍâ·â±ÕµÄ£¬¿ÉÊÇÓÉÓÚphp¶ÔÀàµÄ³ÉÔ±±äÁ¿Ã»ÓÐprivateÓëpubliceÖ®ÀàµÄ·Ö±ð£¬Ö»ºÃ¾ÍÕâôֱ½Ó¶¨ÒåÁË¡£ÕâÊÇPHPµÄÒ»¸öÁîÈËÒź¶µÄµØ·½¡££©
¡¡¡¡
¡¡¡¡£±.³ÉÔ±±äÁ¿ËµÃ÷
¡¡¡¡class pop3
¡¡¡¡{
¡¡¡¡¡¡¡¡¡¡¡¡var $hostname=""; // POPÖ÷»úÃû
¡¡¡¡¡¡¡¡¡¡¡¡var $port=110; // Ö÷»úµÄPOP3¶Ë¿Ú£¬Ò»°ãÊÇ110ºÅ¶Ë¿Ú
¡¡¡¡ var $timeout=5;¡¡¡¡// Á¬½ÓÖ÷»úµÄ×î´ó³¬Ê±Ê±¼ä¡¡
¡¡¡¡¡¡¡¡¡¡¡¡var $connection=0; // ±£´æÓëÖ÷»úµÄÁ¬½Ó
¡¡¡¡¡¡¡¡¡¡¡¡var $state="DISCONNECTED"; // ±£´æµ±Ç°µÄ״̬¡¡
¡¡¡¡¡¡¡¡¡¡¡¡var $debug=0;¡¡¡¡// ×öΪ±êʶ£¬ÊÇ·ñÔÚµ÷ÊÔ״̬£¬Êǵϰ£¬Êä³öµ÷ÊÔÐÅÏ¢
¡¡¡¡ var $err_str='';¡¡¡¡// Èç¹û³ö´í£¬ÕâÀï±£´æ´íÎóÐÅÏ¢
¡¡¡¡ var $err_no;¡¡¡¡¡¡//Èç¹û³ö´í£¬ÕâÀï±£´æ´íÎóºÅÂë
¡¡¡¡ var $resp; // ÁÙʱ±£´æ·þÎñÆ÷µÄÏìÓ¦ÐÅÏ¢
¡¡¡¡ var $apop; // ָʾÐèҪʹÓüÓÃÜ·½Ê½½øÐÐÃÜÂëÑéÖ¤£¬Ò»°ã·þÎñÆ÷²»ÐèÒª
¡¡¡¡ var $messages; //¡¡ÓʼþÊý
¡¡¡¡ var $size; //¸÷ÓʼþµÄ×Ü´óС
¡¡¡¡ var $mail_list; // Ò»¸öÊý×飬±£´æ¸÷¸öÓʼþµÄ´óС¼°ÆäÔÚÓʼþ·þÎñÆ÷ÉÏÐòºÅ
¡¡¡¡
¡¡¡¡ var $head=array(); // ÓʼþÍ·µÄÄÚÈÝ£¬Êý×é
¡¡¡¡ var $body=array(); // ÓʼþÌåµÄÄÚÈÝ£¬Êý×é;
¡¡¡¡
¡¡¡¡£².µ±È»£¬ÕâÆäÖеÄÓÐЩ±äÁ¿£¬½öͨ¹ýÕâÑùÒ»¸ö¼òµ¥µÄ˵Ã÷²¢²»ÄÜÍêÈ«Á˽âÈçºÎʹÓã¬ÏÂÃæÎÒ¾ÍÖð¸öÀ´ËµÃ÷Õâ¸öÀàʵÏÖÖеÄһЩÖ÷Òª·½·¨£º
¡¡¡¡Function pop3($server="192.100.100.1",$port=110,$time_out=5)
¡¡¡¡{$this->hostname=$server;
¡¡¡¡ $this->port=$port;
¡¡¡¡ $this->timeout=$time_out;
¡¡¡¡ return true;
¡¡¡¡}
¡¡¡¡ÊìÏ¤ÃæÏò¶ÔÏó±à³ÌµÄÅóÓÑÒ»¿´¾Í»áÖªµÀ£¬ÕâÊÇÕâ¸öÀàµÄ¹¹Ô캯Êý£¬ÔÚ³õʼ»¯Õâ¸öÀàʱ£¬¿ÉÒÔ¸ø³öÕ⼸¸ö×î»ù±¾µÄ²ÎÊý£ºpop3·þÎñÆ÷µÄµØÖ·£¬¶Ë¿ÚºÅ£¬¼°Á¬½Ó·þÎñÆ÷ʱµÄ×î´ó³¬Ê±Ê±¼ä¡£Ò»°ãÀ´Ëµ£¬Ö»ÐèÒª¸ø³öPOP3·þÎñÆ÷µÄµØÖ·¾ÍÐÐÁË¡£
¡¡¡¡Function open()
¡¡¡¡{
¡¡¡¡if($this->hostname=="")
¡¡¡¡¡¡¡¡{$this->err_str="ÎÞЧµÄÖ÷»úÃû!!";
¡¡¡¡ return false;
¡¡¡¡ }
¡¡¡¡
¡¡¡¡if ($this->debug) echo "ÕýÔÚ´ò¿ª¡¡$this->hostname,$this->port,&$err_no, &$err_str, $this->timeout<BR>";
¡¡¡¡if (!$this->connection=fsockopen($this->hostname,$this->port,&$err_no, &$err_str, $this->timeout))
¡¡¡¡ {
¡¡¡¡ $this->err_str="Á¬½Óµ½POP·þÎñÆ÷ʧ°Ü£¬´íÎóÐÅÏ¢£º".$err_str."´íÎóºÅ£º".$err_no;
¡¡¡¡ return false;
¡¡¡¡ }
¡¡¡¡ else
¡¡¡¡ {
¡¡¡¡ $this->getresp();
¡¡¡¡ if($this->debug)¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡ ¡¡¡¡ $this->outdebug($this->resp);
¡¡¡¡ if (substr($this->resp,0,3)!="+OK")
¡¡¡¡ {$this->err_str="·þÎñÆ÷·µ»ØÎÞЧµÄÐÅÏ¢£º".$this->resp."Çë¼ì²éPOP·þÎñÆ÷ÊÇ·ñÕýÈ·";
¡¡¡¡ return false;
¡¡¡¡ }
¡¡¡¡ $this->state="AUTHORIZATION";
¡¡¡¡ return true;
¡¡¡¡ }
¡¡¡¡}
¡¡¡¡¸Ã·½·¨²»ÐèÒªÈκβÎÊý¾Í¿É½¨Á¢ÓëPOP3·þÎñÆ÷µÄsockÁ¬½Ó¡£¸Ã·½·¨ÓÖÓõ½ÁËÁíÒ»¸öÀàÖеķ½·¨$this->getresp();ÏÂÃæÊÇÕâ¸ö·½·¨µÄÉùÃ÷£º
¡¡¡¡Function getresp()
¡¡¡¡ {
¡¡¡¡ for($this->resp="";;)
¡¡¡¡¡¡¡¡ {
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ if(feof($this->connection))
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ return false;
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ $this->resp.=fgets($this->connection,100);
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ $length=strlen($this->resp);
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ if($length>=2 && substr($this->resp,$length-2,2)=="\r\n")
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ {
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ¡¡¡¡ $this->resp=strtok($this->resp,"\r\n");
¡¡¡¡ return true;
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ }
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡}
¡¡¡¡¡¡¡¡¡¡¡¡}
¡¡¡¡Õâ¸ö·½·¨È¡µÃ·þÎñÆ÷¶ËµÄ·µ»ØÐÅÏ¢²¢½øÐмòµ¥µÄ´¦Àí£ºÈ¥µô×îºóµÄ»Ø³µ»»Ðзû£¬½«·µ»ØÐÅÏ¢±£´æÔÚrespÕâ¸öÄÚ²¿±äÁ¿ÖС£Õâ¸ö·½·¨ÔÚºóÃæµÄ¶à¸ö²Ù×÷Öж¼½«Óõ½¡£ÁíÍ⣬»¹ÓиöС·½·¨Ò²ÔÚºóÃæµÄ¶à¸ö²Ù×÷ÖÐÓõ½£º
¡¡¡¡Function outdebug($message)
¡¡¡¡{
¡¡¡¡ echo htmlspecialchars($message)."<br>\n";
¡¡¡¡}
¡¡¡¡ËüµÄ×÷ÓþÍÊǰѵ÷ÊÔÐÅÏ¢$messageÏÔʾ³öÀ´£¬²¢°ÑÒ»Ð©ÌØÊâ×Ö·û½øÐÐת»»ÒÔ¼°ÔÚÐÐβ¼ÓÉÏ<br>±êÇ©£¬ÕâÑùÊÇΪÁËʹÆäÊä³öµÄµ÷ÊÔÐÅÏ¢±ãÓÚÔĶÁºÍ·ÖÎö¡£
¡¡¡¡½¨Á¢ÆðÓë·þÎñÆ÷µÄsockÁ¬½ÓÖ®ºó£¬¾ÍÒª¸ø·þÎñÆ÷·¢ËÍÏà¹ØµÄÃüÁîÁË£¨Çë²Î¼ûÉÏÃæµÄÓë·þÎñÆ÷¶Ô»°µÄ¹ý³Ì£©´ÓÉÏÃæ¶Ô¡¡POP¶Ô»°µÄ·ÖÎö¿ÉÒÔ¿´µ½£¬Ã¿´Î¶¼ÊÇ·¢ËÍÒ»ÌõÃüÁȻºó·þÎñÆ÷¸øÓèÒ»¶¨µÄ»ØÓ¦£¬Èç¹ûÃüÁîµÄÖ´ÐÐÊǶԵ쬻ØÓ¦Ò»°ãÊÇÒÔ+OK¿ªÍ·£¬ºóÃæÊÇһЩÃèÊöÐÅÏ¢£¬ËùÒÔ£¬ÎÒÃÇ¿ÉÒÔ×öÒ»¸öͨ¹ý·¢ËÍÃüÁîµÄ·½·¨:
¡¡¡¡Function command($command,$return_lenth=1,$return_code='+')
¡¡¡¡{
¡¡¡¡ if ($this->connection==0)
¡¡¡¡ {
¡¡¡¡ $this->err_str="ûÓÐÁ¬½Óµ½ÈκηþÎñÆ÷£¬Çë¼ì²éÍøÂçÁ¬½Ó";
¡¡¡¡ return false;
¡¡¡¡ }
¡¡¡¡ if ($this->debug)
¡¡¡¡ $this->outdebug(">>> $command");
¡¡¡¡ if (!fputs($this->connection,"$command\r\n"))
¡¡¡¡ {
¡¡¡¡ $this->err_str="ÎÞ·¨·¢ËÍÃüÁî".$command;
¡¡¡¡ return false;
¡¡¡¡ }
¡¡¡¡ else
¡¡¡¡ {
¡¡¡¡ $this->getresp();
¡¡¡¡ if($this->debug)
¡¡¡¡ ¡¡¡¡ $this->outdebug($this->resp);
¡¡¡¡ if (substr($this->resp,0,$return_lenth)!=$return_code)
¡¡¡¡ {
¡¡¡¡ $this->err_str=$command." ÃüÁî·þÎñÆ÷·µ»ØÎÞЧ:".$this->resp;
¡¡¡¡ return false;
¡¡¡¡ }
¡¡¡¡¡¡¡¡else
¡¡¡¡ return true;
¡¡¡¡¡¡¡¡}
¡¡¡¡}
¡¡¡¡Õâ¸ö·½·¨¿ÉÒÔ½ÓÊÜÈý¸ö²ÎÊý: $command--> ·¢Ë͸ø·þÎñÆ÷µÄÃüÁî; $return_lenth,$return_code £¬Ö¸¶¨´Ó·þÎñÆ÷µÄ·µ»ØÖÐÈ¡¶à³¤µÄÖµ×öΪÃüÁî·µ»ØµÄ±êʶÒÔ¼°Õâ¸ö±êʶµÄÕýÈ·ÖµÊÇʲô¡£¶ÔÓÚÒ»°ãµÄpop²Ù×÷À´Ëµ£¬Èç¹û·þÎñÆ÷µÄ·µ»ØµÚÒ»¸ö×Ö·ûΪ"+"£¬Ôò¿ÉÒÔÈÏΪÃüÁîÊÇÕýÈ·Ö´ÐÐÁË¡£Ò²¿ÉÒÔÓÃÇ°ÃæÌáµ½¹ýµÄÈý¸ö×Ö·û"+OK"×öΪÅжϵıêʶ¡£
¡¡¡¡ÏÂÃæ½éÉܵö·½·¨Ôò¿ÉÒÔ°´ÕÕǰÊöÊÕÈ¡ÐżþµÄ¶Ô»°È¥Àí½â£¬ÒòΪÓйصÄÄÚÈÝÒѾÔÚÇ°Ãæ×öÁË˵Ã÷£¬Òò´ËÏÂÃæµÄ·½·¨²»×öÏêϸµÄ˵Ã÷£¬Çë²Î¿¼ÆäÖеÄ×¢ÊÍ£º
¡¡¡¡Function Login($user,$password)¡¡//·¢ËÍÓû§Ãû¼°ÃÜÂ룬µÇ¼µ½·þÎñÆ÷
¡¡¡¡{
¡¡¡¡if($this->state!="AUTHORIZATION")
¡¡¡¡ {
¡¡¡¡ $this->err_str="»¹Ã»ÓÐÁ¬½Óµ½·þÎñÆ÷»ò״̬²»¶Ô";
¡¡¡¡ return false;
¡¡¡¡ }
¡¡¡¡if (!$this->apop) //·þÎñÆ÷ÊÇ·ñ²ÉÓÃAPOPÓû§ÈÏÖ¤
¡¡¡¡ {
¡¡¡¡ if (!$this->command("USER $user",3,"+OK")) return false;
¡¡¡¡ if (!$this->command("PASS $password",3,"+OK")) return false;
¡¡¡¡ }
¡¡¡¡else
¡¡¡¡ {
¡¡¡¡ //echo $this->resp=strtok($this->resp,"\r\n");
¡¡¡¡ if (!$this->command("APOP $user ".md5($this->greeting.$password),3,"+OK")) return false;
¡¡¡¡ }
¡¡¡¡$this->state="TRANSACTION"; // Óû§ÈÏ֤ͨ¹ý£¬½øÈë´«ËÍģʽ
¡¡¡¡return true;
¡¡¡¡}
¡¡¡¡
¡¡¡¡Function stat() // ¶ÔÓ¦×ÅstatÃüÁȡµÃ×ܵÄÓʼþÊýÓë×ܵĴóС
¡¡¡¡{
¡¡¡¡if($this->state!="TRANSACTION")
¡¡¡¡ {
¡¡¡¡ $this->err_str="»¹Ã»ÓÐÁ¬½Óµ½·þÎñÆ÷»òûÓгɹ¦µÇ¼";
¡¡¡¡ return false;
¡¡¡¡ }
¡¡¡¡if (!$this->command("STAT",3,"+OK"))
¡¡¡¡ return false;
¡¡¡¡ else
¡¡¡¡ {
¡¡¡¡ $this->resp=strtok($this->resp," ");
¡¡¡¡ $this->messages=strtok(" "); // È¡µÃÓʼþ×ÜÊý
¡¡¡¡ $this->size=strtok(" "); //È¡µÃ×ܵÄ×Ö½Ú´óС
¡¡¡¡ return true;
¡¡¡¡ }
¡¡¡¡}
¡¡¡¡Function listmail($mess=null,$uni_id=null) //¶ÔÓ¦µÄÊÇLISTÃüÁȡµÃÿ¸öÓʼþµÄ´óС¼°ÐòºÅ¡£Ò»°ãÀ´ËµÓõ½µÄÊÇListÃüÁÈç¹ûÖ¸¶¨ÁË$uni_id £¬ÔòʹÓÃUIDLÃüÁ·µ»ØµÄÊÇÿ¸öÓʼþµÄ±êʶ·û£¬ÊÂʵÉÏ£¬Õâ¸ö±êʶ·ûÒ»°ãÊÇûÓÐʲôÓõġ£È¡µÃµÄ¸÷¸öÓʼþµÄ´óС·µ»Øµ½ÀàµÄÄÚ²¿±äÁ¿mail_listÕâ¸ö¶þάÊý×éÀï¡£
¡¡¡¡{
¡¡¡¡if($this->state!="TRANSACTION")
¡¡¡¡ {
¡¡¡¡ $this->err_str="»¹Ã»ÓÐÁ¬½Óµ½·þÎñÆ÷»òûÓгɹ¦µÇ¼";
¡¡¡¡ return false;
¡¡¡¡ }
¡¡¡¡if ($uni_id)
¡¡¡¡ $command="UIDL ";
¡¡¡¡ else
¡¡¡¡ $command="LIST ";
¡¡¡¡if ($mess)
¡¡¡¡ $command.=$mess;
¡¡¡¡
¡¡¡¡if (!$this->command($command,3,"+OK"))
¡¡¡¡ {
¡¡¡¡ //echo $this->err_str;
¡¡¡¡ return false;
¡¡¡¡ }
¡¡¡¡ else
¡¡¡¡ {
¡¡¡¡ $i=0;
¡¡¡¡ $this->mail_list=array();
¡¡¡¡ $this->getresp();
¡¡¡¡ while ($this->resp!=".")
¡¡¡¡ { $i++;
¡¡¡¡ if ($this->debug)
¡¡¡¡ {
¡¡¡¡ $this->outdebug($this->resp);
¡¡¡¡ }
¡¡¡¡ if ($uni_id)
¡¡¡¡ {
¡¡¡¡ $this->mail_list[$i][num]=strtok($this->resp," ");
¡¡¡¡ $this->mail_list[$i][size]=strtok(" ");
¡¡¡¡ }
¡¡¡¡ else
¡¡¡¡ {
¡¡¡¡ $this->mail_list[$i]["num"]=intval(strtok($this->resp," "));
¡¡¡¡ $this->mail_list[$i]["size"]=intval(strtok(" "));
¡¡¡¡ }
¡¡¡¡ $this->getresp();
¡¡¡¡ }
¡¡¡¡ return true;
¡¡¡¡ }
¡¡¡¡}
¡¡¡¡function getmail($num=1,$line=-1)¡¡// È¡µÃÓʼþµÄÄÚÈÝ£¬$numÊÇÓʼþµÄÐòºÅ£¬$lineÊÇÖ¸¶¨¹²È¡µÃÕýÎĵĶàÉÙÐС£ÓÐЩʱºò£¬ÈçÓʼþ±È½Ï´ó¶øÎÒÃÇÖ»ÏëÏȲ鿴ÓʼþµÄÖ÷ÌâʱÊDZØÐëÖ¸¶¨ÐÐÊýµÄ¡£Ä¬ÈÏÖµ$line=-1£¬¼´È¡»ØËùÓеÄÓʼþÄÚÈÝ£¬È¡µÃµÄÄÚÈÝ´æ·Åµ½ÄÚ²¿±äÁ¿$head£¬$bodyÁ½¸öÊý×éÀÊý×éÀïµÄÿһ¸öÔªËØ¶ÔÓ¦µÄÊÇÓʼþÔ´´úÂëµÄÒ»ÐС£
¡¡¡¡{
¡¡¡¡£€if($this->state!="TRANSACTION")
¡¡¡¡ {
¡¡¡¡ $this->err_str="²»ÄÜÊÕÈ¡Ðżþ£¬»¹Ã»ÓÐÁ¬½Óµ½·þÎñÆ÷»òûÓгɹ¦µÇ¼";
¡¡¡¡ return false;
¡¡¡¡ }
¡¡¡¡if ($line<0)
¡¡¡¡ $command="RETR $num";
¡¡¡¡else
¡¡¡¡ $command="TOP $num $line";
¡¡¡¡
¡¡¡¡if (!$this->command("$command",3,"+OK"))
¡¡¡¡ return false;
¡¡¡¡ else
¡¡¡¡ {
¡¡¡¡ $this->getresp();
¡¡¡¡ $is_head=true;
¡¡¡¡ while ($this->resp!=".") // . ºÅÊÇÓʼþ½áÊøµÄ±êʶ
¡¡¡¡ {
¡¡¡¡ if ($this->debug)
¡¡¡¡ $this->outdebug($this->resp);
¡¡¡¡ if (substr($this->resp,0,1)==".")
¡¡¡¡ $this->resp=substr($this->resp,1,strlen($this->resp)-1);
¡¡¡¡ if (trim($this->resp)=="") // ÓʼþÍ·ÓëÕýÎIJ¿·ÖµÄÊÇÒ»¸ö¿ÕÐÐ
¡¡¡¡ $is_head=false;
¡¡¡¡ if ($is_head)
¡¡¡¡ $this->head[]=$this->resp;
¡¡¡¡ else
¡¡¡¡ $this->body[]=$this->resp;
¡¡¡¡ $this->getresp();
¡¡¡¡ }
¡¡¡¡ return true;
¡¡¡¡ }
¡¡¡¡
¡¡¡¡} // end function
¡¡¡¡
¡¡¡¡function dele($num) // ɾ³ýÖ¸¶¨ÐòºÅµÄÓʼþ£¬$num ÊÇ·þÎñÆ÷ÉϵÄÓʼþÐòºÅ
¡¡¡¡{
¡¡¡¡ if($this->state!="TRANSACTION")
¡¡¡¡ {
¡¡¡¡ $this->err_str="²»ÄÜɾ³ýÔ¶³ÌÐżþ£¬»¹Ã»ÓÐÁ¬½Óµ½·þÎñÆ÷»òûÓгɹ¦µÇ¼";
¡¡¡¡ return false;
¡¡¡¡ }
¡¡¡¡ if (!$num)
¡¡¡¡ {
¡¡¡¡ $this->err_str="ɾ³ýµÄ²ÎÊý²»¶Ô";
¡¡¡¡ return false;
¡¡¡¡ }
¡¡¡¡ if ($this->command("DELE $num ",3,"+OK"))
¡¡¡¡ return true;
¡¡¡¡ else
¡¡¡¡ return false;
¡¡¡¡}
¡¡¡¡Í¨¹ýÒÔÉϼ¸¸ö·½·¨£¬ÎÒÃÇÒѾ¿ÉÒÔʵÏÖÓʼþµÄ²é¿´¡¢ÊÕÈ¡¡¢É¾³ýµÄ²Ù×÷£¬²»¹ý±ðÍüÁË×îºóÒªÍ˳ö£¬²¢¹Ø±ÕÓë·þÎñÆ÷µÄÁ¬½Ó£¬µ÷ÓÃÏÂÃæµÄÕâ¸ö·½·¨£º
¡¡¡¡Function Close()
¡¡¡¡{
¡¡¡¡if($this->connection!=0)
¡¡¡¡ {
¡¡¡¡ if($this->state=="TRANSACTION")
¡¡¡¡ $this->command("QUIT",3,"+OK");
¡¡¡¡ fclose($this->connection);
¡¡¡¡¡¡¡¡ $this->connection=0;
¡¡¡¡ $this->state="DISCONNECTED";
¡¡¡¡ }
¡¡¡¡}
Ó¦ÓÃʵÀý
¡¡¡¡POP3ÊÕÈ¡ÓʼþµÄÀàÔÚÇ°ÃæµÄÎÄÕÂÖÐÒѾ¸ø´ó¼Ò×öÁËÏêϸµÄ½éÉÜ£¬ÏÂÃæÎÒÃÇÀ´¿´¿´ÈçºÎÓ¦ÓÃÕâ¸öÀࣺ
¡¡¡¡<?
¡¡¡¡include("pop3.inc.php");
¡¡¡¡$host="pop.china.com";
¡¡¡¡$user="boss_ch";
¡¡¡¡$pass="026007";
¡¡¡¡$rec=new pop3($host,110,2);
¡¡¡¡if (!$rec->open()) die($rec->err_str);
¡¡¡¡echo "open ";
¡¡¡¡if (!$rec->login($user£¬$pass)) die($rec->err_str);
¡¡¡¡echo "login";
¡¡¡¡if (!$rec->stat()) die($rec->err_str);
¡¡¡¡echo "¹²ÓÐ".$rec->messages."·âÐżþ£¬¹²".$rec->size."×Ö½Ú´óС<br>";
¡¡¡¡
¡¡¡¡if ($rec->messages>0)
¡¡¡¡ {
¡¡¡¡ if (!$rec->listmail()) die($rec->err_str);
¡¡¡¡ echo "ÓÐÒÔÏÂÐżþ£º<br>";
¡¡¡¡ for ($i=1;$i<=count($rec->mail_list);$i++)
¡¡¡¡ {
¡¡¡¡ echo "Ðżþ".$rec->mail_list[$i][num]."´óС£º".$rec->mail_list[$i][size]."<BR>";
¡¡¡¡ }
¡¡¡¡ $rec->getmail(1);
¡¡¡¡ echo "ÓʼþÍ·µÄÄÚÈÝ£º<br>";
¡¡¡¡ for ($i=0;$i<count($rec->head);$i++)
¡¡¡¡ echo htmlspecialchars($rec->head[$i])."<br>\n";
¡¡¡¡ echo "ÓʼþÕýÎÄ¡¡£º<BR>";
¡¡¡¡ for ($i=0;$i<count($rec->body);$i++)
¡¡¡¡ echo htmlspecialchars($rec->body[$i])."<br>\n";
¡¡¡¡ }
¡¡¡¡$rec->close();
¡¡¡¡?>
¡¡¡¡Èç¹ûÄã°Ñpop3ÀàÖеÄdebugÉèΪtrueµÄ»°£¬Ä㻹¿ÉÒÔ¿´µ½³ÌÐòÓëpop3·þÎñÆ÷ÊÇÈçºÎ¶Ô»°µÄ£¬ÓÃÓÚÕýÔÚµ÷ÊԵijÌÐòÀ´Ëµ£¬ÕâÑùÏԵøüΪֱ¹Û¡£
¡¡¡¡Ð¡½á
¡¡¡¡´ÓÒÔÉϵÄÕâ¸öʵÀýÎÒÃÇ¿ÉÒÔ¿´µ½PHPÕæµÄÊÇÍøÕ¾¿ª·¢µÄÒ»¸ö¹¦Äܷdz£Ç¿´óµÄ¹¤¾ß£¬µ«ÊÇÒ²¿ÉÒԸоõµ½£¬PHP×öΪһÖÖ»ìºÏÐεÄÓïÑÔ£¬ÆäÃæ¶Ô¶ÔÏóµÄ¿ª·¢ÓëÆäËüµÄ¹¤¾ßÈçjavaÏà±È»¹´æÔÚ²»ÉÙÈÃÈËÒź¶µÄµØ·½¡£Õâ¸öpopÀàµÄʵÏÖÒ²»¹Óв»ÉÙÐèÒª¸Ä½øÖ®´¦£¬»¶Ó¸÷λͬÈÊÃÇÖ¸µ¼¡£ ,