来源:自学PHP网 时间:2014-12-25 09:56 作者: 阅读:次
[导读] pop3邮件收取一例,test_pop3.phplt;HTMLgt;lt;HEADgt;lt;TITLEgt;TestforManuelLemos'sPHPPOP3classlt;/TITLEgt;lt;/HEADgt;lt;BODYgt;lt;?requirequot;pop3.phpquot;;$user=quot;userquot;;$passWord=quot;passwdquot;;$apop=0;$pop3_connection=newpop...
test_pop3.php
<HTML> <HEAD> <TITLE>Test for Manuel Lemos's PHP POP3 class</TITLE> </HEAD> <BODY> <? require("pop3.php"); $user="user"; $passWord="passwd"; $apop=0; $pop3_connection=new pop3_class; $pop3_connection->hostname="mail.xiaocui.com"; if(($error=$pop3_connection->Open())=="") { echo "<PRE>Connected to the POP3 server "$pop3_connection->hostname".</PRE>\n"; if(($error=$pop3_connection->Login($user,$password,$apop))=="") { echo "<PRE>User "$user" logged in.</PRE>\n"; if(($error=$pop3_connection->Statistics(&$messages,&$size))=="") { echo "<PRE>There are <b>$messages</b> messages in the mail box with a total of <b>$size</b> bytes.</PRE>\n"; $result=$pop3_connection->ListMessages("",0); if(GetType($result)=="array") { for(Reset($result),$message=0;$message<count($result);Next($result),$message++) echo "<PRE>Message ",Key($result)," - ",$result[Key($result)]," bytes.</PRE>\n"; if($messages>0) { if(($error=$pop3_connection->RetrieveMessage(1,&$headers,&$body,-1))=="") { echo "<PRE>Message 1:\n---Message headers starts below---</PRE>\n"; for($line=0;$line<count($headers);$line++) echo "<PRE>",HtmlSpecialChars($headers[$line]),"</PRE>\n"; echo "<PRE>---Message headers ends above---\n---Message body starts below---</PRE>\n"; for($line=0;$line<count($body);$line++) echo "<PRE>",HtmlSpecialChars($body[$line]),"</PRE>\n"; echo "<PRE>---Message body ends above---</PRE>\n"; } } if($error==""&&($error=$pop3_connection->Close())=="") echo "<PRE>Disconnected from the POP3 server "$pop3_connection->hostname".</PRE>\n"; } else $error=$result; } } } if($error!="") echo "<H2>Error: ",HtmlSpecialChars($error),"</H2>"; ?> </BODY> </HTML> pop3.php <? class pop3_class { var $hostname=""; var $port=110; var $connection=0; var $state="DISCONNECTED"; var $greeting=""; var $must_update=0; var $debug=0; Function OutputDebug($message) { echo $message,"<br>\n"; } Function GetLine() { for($line="";;) { if(feof($this->connection)) return(0); $line.=fgets($this->connection,100); $length=strlen($line); if($length>=2 && substr($line,$length-2,2)=="\r\n") { $line=substr($line,0,$length-2); if($this->debug) $this->OutputDebug("< $line"); return($line); } } } Function PutLine($line) { if($this->debug) $this->OutputDebug("> $line"); return(fputs($this->connection,"$line\r\n")); } Function OpenConnection() { if($this->hostname=="") return("2 it was not specified a valid hostname"); switch(($this->connection=fsockopen($this->hostname,$this->port))) { case -3: return("-3 socket could not be created"); case -4: return("-4 dns lookup on hostname \"$hostname\" failed"); case -5: return("-5 connection refused or timed out"); case -6: return("-6 fdopen() call failed"); case -7: return("-7 setvbuf() call failed"); default: return(""); } } Function CloseConnection() { if($this->connection!=0) { fclose($this->connection); $this->connection=0; } } Function Open() { if($this->state!="DISCONNECTED") return("1 a connection is already opened"); if(($error=$this->OpenConnection())!="") return($error); $this->greeting=$this->GetLine(); if(GetType($this->greeting)!="string" || strtok($this->greeting," ")!="+OK") { $this->CloseConnection(); return("3 POP3 server greeting was not found"); } $this->greeting=strtok("\r\n"); $this->must_update=0; $this->state="AUTHORIZATION"; return(""); } Function Close() { if($this->state=="DISCONNECTED") return("no connection was opened"); if($this->must_update) { if($this->PutLine("QUIT")==0) return("Could not send the QUIT command"); $response=$this->GetLine(); if(GetType($response)!="string") return("Could not get quit command response"); if(strtok($response," ")!="+OK") return("Could not quit the connection: ".strtok("\r\n")); } $this->CloseConnection(); $this->state="DISCONNECTED"; return(""); } Function Login($user,$password,$apop) { if($this->state!="AUTHORIZATION") return("connection is not in AUTHORIZATION state"); if($apop) { if($this->PutLine("APOP $user ".md5($this->greeting.$password))==0) return("Could not send the APOP command"); $response=$this->GetLine(); if(GetType($response)!="string") return("Could not get APOP login command response"); if(strtok($response," ")!="+OK") return("APOP login failed: ".strtok("\r\n")); } else { if($this->PutLine("USER $user")==0) return("Could not send the USER command"); $response=$this->GetLine(); if(GetType($response)!="string") return("Could not get user login entry response"); if(strtok($response," ")!="+OK") return("User error: ".strtok("\r\n")); if($this->PutLine("PASS $password")==0) return("Could not send the PASS command"); $response=$this->GetLine(); if(GetType($response)!="string") return("Could not get login password entry response"); if(strtok($response," ")!="+OK") return("Password error: ".strtok("\r\n")); } $this->state="TRANSACTION"; return(""); } /* Statistics method - pass references to variables to hold the number of messages in the mail box and the size that they take in bytes. */ Function Statistics($messages,$size) { if($this->state!="TRANSACTION") return("connection is not in TRANSACTION state"); if($this->PutLine("STAT")==0) return("Could not send the STAT command"); $response=$this->GetLine(); if(GetType($response)!="string") return("Could not get the statistics command response"); if(strtok($response," ")!="+OK") return("Could not get the statistics: ".strtok("\r\n")); $messages=strtok(" "); $size=strtok(" "); return(""); } Function ListMessages($message,$unique_id) { if($this->state!="TRANSACTION") return("connection is not in TRANSACTION state"); if($unique_id) $list_command="UIDL"; else $list_command="LIST"; if($this->PutLine("$list_command $message")==0) return("Could not send the $list_command command"); $response=$this->GetLine(); if(GetType($response)!="string") return("Could not get message list command response"); if(strtok($response," ")!="+OK") return("Could not get the message listing: ".strtok("\r\n")); if($message=="") { for($messages=array();;) { $response=$this->GetLine(); if(GetType($response)!="string") return("Could not get message list response"); if($response==".") break; $message=intval(strtok($response," ")); if($unique_id) $messages[$message]=strtok(" "); else $messages[$message]=intval(strtok(" ")); } return($messages); } else { $message=intval(strtok(" ")); return(intval(strtok(" "))); } } Function RetrieveMessage($message,$headers,$body,$lines) { if($this->state!="TRANSACTION") return("connection is not in TRANSACTION state"); if($lines<0) { $command="RETR"; $arguments="$message"; } else { $command="TOP"; $arguments="$message $lines"; } if($this->PutLine("$command $arguments")==0) return("Could not send the $command command"); $response=$this->GetLine(); if(GetType($response)!="string") return("Could not get message retrieval command response"); if(strtok($response," ")!="+OK") return("Could not retrieve the message: ".strtok("\r\n")); for($headers=$body=array(),$line=0;;$line++) { $response=$this->GetLine(); if(GetType($response)!="string") return("Could not retrieve the message"); switch($response) { case ".": return(""); case "": break 2; default: if(substr($response,0,1)==".") $response=substr($response,1,strlen($response)-1); break; } $headers[$line]=$response; } for($line=0;;$line++) { $response=$this->GetLine(); if(GetType($response)!="string") return("Could not retrieve the message"); switch($response) { case ".": return(""); default: if(substr($response,0,1)==".") $response=substr($response,1,strlen($response)-1); break; } $body[$line]=$response; } return(""); } }; ?> |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com