您的位置:首页技术文章

pop3邮件收取一例

【字号: 日期:2023-08-13 13:17:47浏览:5作者:馨心
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 &quot;$pop3_connection->hostname&quot;.</PRE>n";;;;if(($error=$pop3_connection->Login($user,$password,$apop))=="");;;{;;;;;;echo "<PRE>User &quot;$user&quot; 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 &quot;$pop3_connection->hostname&quot;.</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)=="rn"){$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,"$linern"));}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("rn");$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("rn"));}$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("rn"));}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("rn"));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("rn"));}$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("rn"));$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("rn"));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("rn"));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