您的位置:首页网页设计PHP实例 → pop3邮件收取一例

pop3邮件收取一例

时间:2004/11/7 3:22:00来源:本站整理作者:蓝点我要评论(2)

test_pop3.php







Test for Manuel Lemos's PHP POP3 class






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)=="\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("");

        }



};



?>




相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 没有查询到任何记录。

最新文章 我的php文件怎么打开_php运算符怎么写 php 如何生成静态页面的函数PHP生成图片缩略图PHP session常见问题集锦及解决办法PHP实现同步远程Mysql

人气排行 DEDE在文章列表文章没有缩略图的不显示图片php+mysq修改用户密码我的php文件怎么打开_如何打开php文件的办法FCKeditor的配置和使用方法使用dedecms建站教程PHP+Ajax实现分页技术图片存储与浏览一例Linux+Apache+PHP+MySQLPHP生成图片缩略图