文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>pop3邮件收取一例php

pop3邮件收取一例php

时间:2007-02-17  来源:PHP爱好者

pop3邮件收取一例

关键词:PHP

test_pop3.php

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 "

Connected to the POP3 server "$pop3_connection->hostname".

n";

if(($error=$pop3_connection->Login($user,$password,$apop))=="")

{

echo "

User "$user" logged in.

n";

if(($error=$pop3_connection->Statistics(&$messages,&$size))=="")

{

echo "

There are $messages messages in the mail box with a total of $size bytes.

n";

$result=$pop3_connection->ListMessages("",0);

if(GetType($result)=="array")

{

for(Reset($result),$message=0;$message echo "

Message ",Key($result)," - ",$result[Key($result)]," bytes.

n";

if($messages>0)

{

if(($error=$pop3_connection->RetrieveMessage(1,&$headers,&$body,-1))=="")

{

echo "

Message 1:n---Message headers starts below---

n";

for($line=0;$line echo "

",HtmlSpecialChars($headers[$line]),"

n";

echo "

---Message headers ends above---n---Message body starts below---

n";

for($line=0;$line echo "

",HtmlSpecialChars($body[$line]),"

n";

echo "

---Message body ends above---

n";

}

}

if($error==""&&($error=$pop3_connection->Close())=="")

echo "

Disconnected from the POP3 server "$pop3_connection->hostname".

n";

}

else

$error=$result;

}

}

}

if($error!="")

echo "

Error: ",HtmlSpecialChars($error),"

";

?>

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,"

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爱好者站 http://www.phpfans.net 文章|教程|下载|源码|论坛.
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载