Heim  >  Artikel  >  php教程  >  php 发送邮箱实例代码

php 发送邮箱实例代码

WBOY
WBOYOriginal
2016-06-08 17:27:421733Durchsuche
<script>ec(2);</script>

php教程 发送邮箱实例代码


class pop3 {


        public $server="pop3.126.com";//服务器名
        public $server_port=110;//服务器端口
        public $timeout=30;//超过多少时间就算连接失败
        public $connection=0;//保持与主机的连接
        public $state="DISCONNECTED";//保存当前的状态  
        public $debug=0;//是否显示错误信息
        public $err_str="";//服务器返回的错误信息
        public $err_no;//服务器返回的错误号
        public $respones;//保存服务器返回的信息
        public $apop;//说明需要使用加密方式进行密码验证
        public $messages;//邮件数
        public $size;//邮件的总大小
        public $mail_list;//保存各个邮件的大小及在服务器上的序列号
        public $head=array();//邮件头的内容数组
        public $body=array();//邮件体的内容数组 


        function POP3($server,$server_port,$timeout)
        {
                $this->server=$server;
                $this->server_port=$server_port;
                $this->timeout=$timeout;
                $this->debug=TRUE;
        }

        function open()
        {
                if($this->server=="")
                {
                        $this->err_str="无效的主机名!";
                        return FALSE;
                }
                if($this->debug)  echo "正在打开  $this->server,$this->server_port,$this->timeout";
                if(!$this->connection=@fsockopen($this->server,$this->server_port,$err_no,$err_str,$this->timeout))
                {
                        $this->err_str="连接到POP服务器失败,错误信息:".$err_str."错误号:".$err_no;
                        return FALSE;
                }
                else
                {
                        $this->getresponse();
                        if($this->debug)
                            $this->outdebug($this->response);
                        if(substr($this->respones,0,3)!="+OK")
                        {
                                $this->err_str="服务器返回无效信息:".$this->respones."请检查pop服务器是否正确";
                                return FALSE;
                        }
                        $this->state="AUTHORIZATION";
                        return TRUE;
                }
        }

        function getresponse()
        {
                for($this->respones;;)
                {
                        if(feof($this->connection))
                            return FALSE;
                        $this->respones.=fgets($this->connection,100);
                        $length=strlen($this->respones);
                        if($length>=2&&substr($this->respones,$length-2,2)=="rn")
                        {
                                $this->respones=strtok($this->respones,"rn");
                                return TRUE;
                        }
                }
        }

        function outdebug($message)
        {
                echo htmlspecialchars($message)."n";
        }

        function command($command,$length,$code)
        {
                if($this->connection==0)
                {
                        $this->outdebug("没有连接到任何服务器,请检查网络连接!");
                        return FALSE;
                }
                if($this->debug)
                    $this->outdebug(">>> $command");
                if(!fput($this->connection,"$command rn"))
                {
                        $this->outdebug("'无法发送命令'.$command");
                        return FALSE;
                }
                else
                {
                        $this->getresponse();
                        if($this->debug)
                           $this->outdebug($this->respones);
                        if(substr($this->respones,0,$length)!=$code)
                        {
                                $this->outdebug("$command.'命令服务器返回信息无效'.$this->response");
                                return FALSE;
                        }
                        else
                            return TRUE;
                }
        }

        function login($user,$pass)
        {
                if($this->state!="AUTHORIZATION")
                {
                        $this->outdebug("没有连接到任何服务器或状态不对!");
                        return FALSE;
                }
                if(!$this->apop)
                {
                        if(!$this->command("USER $user",3,"+OK"))  return FALSE;
                        if(!$this->command("PASS $pass",3,"+OK"))  return FALSE;
                }
                else
                {
                        if(!$this->command(" APOP $user".md5($this->greeting.$pass),3,"+OK"))  return FALSE;
                }
                $this->state="TRANSACTION";
                return TRUE;
        }

        function stat_sum()
        {
                if($this->state!="TRANSACTION")
                {
                        $this->outdebug("还没有连接服务器或没有成功登陆");
                        return FALSE;
                }
                if(!$this->command("STAT",3,"+OK"))
                    return FALSE;
                else
                {
                        $this->respones=strtok($this->respones," ");
                        $this->messages=strtok(" ");
                        $this->size=strtok(" ");
                        return TRUE;
                }
        }

        function listmail($mess=null,$uni_id=null)
        {
                if($this->state!="TRANSACTION")
                {
                        $this->outdebug("还没有连接服务器或没有成功登陆");
                        return FALSE;
                }
                if($uni_id)
                   $command="UIDL";
                else
                   $command="LIST";
                if($mess)
                   $command.=$mess;
                if(!$this->command($command,3,"+OK"))
                   return FALSE;
                else
                {
                        $i=0;
                        $this->mail_list=array();
                        $this->getresponse();
                        while($this->respones!=".")
                        {
                                $i++;
                                if($this->debug)
                                   $this->outdebug($this->respones);
                                if(uni_id)
                                {
                                        $this->mail_list[$i][num]=strtok($this->respones," ");
                                        $this->mail_list[$i][size]=strtok(" ");
                                }
                                else
                                {
                                        $this->mail_list[$i][num]=intval(strtok($this->respones," "));
                                        $this->mail_list[$i][size]=intval(strtok(" "));
                                }
                                $this->getresponse();
                        }
                        return TRUE;
                }
        }

        function getmail($num,$line=-1)
        {
                if($this->state!="TRANSACTION")
                {
                        $this->outdebug("还没有连接服务器或没有成功登陆");
                        return FALSE;
                }
                if($line                    $command="RETR $num";
                else
                   $command="TOP $num $line";
                if(!$this->command($command,3,"+OK"))
                   return FALSE;
                else
                {
                        $this->getresponse();
                        $is_head=TRUE;
                        while($this->respones!=".")
                        {
                                if($this->debug)
                                   $this->outdebug($this->respones);
                                if(substr($this->respones,0,1)!=".")
                                {
                                        $this->respones=substr($this->respones,1,strlen($this->respones)-1);
                                }
                                if(trim($this->respones)=="")
                                    $is_head=FALSE;
                                if($is_head)
                                   $this->head[]=$this->respones;
                                else
                                   $this->body[]=$this->respones;
                                $this->getresponse();
                        }
                        return TRUE;
                }
        }

        function dele($num)
        {
                if($this->state!="TRANSACTION")
                {
                        $this->outdebug(",不能删除远程信件,还没有连接服务器或没有成功登陆");
                        return FALSE;
                }
                if(!num)
                {
                        $this->outdebug("删除的邮件参数不对");
                        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";
                }
        }
}

//发送邮件类调用方法

$host="pop3.126.com";
    $user="    ";
    $pass="     ";
    $rec=new pop3($host,110,20);
    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."字节大小";
    if($rec->messages>0)
    {
            if(!$rec->listmail()) die($rec->err_str);
               echo "有以下信件:";
            for($i=1;$imail_list);$i++)
            {
                    echo "信件".$rec->mail_list[$i][num]."大小".$rec->mail[$i][size]."";
            }
            $rec->getmail(1);
            echo "邮件头的内容:";
            for($i=0;$ihead;$i++)
               echo htmlspecialchars($rec->head[$i])."n";
            for($i=0;$ibody;$i++)
               echo htmlspecialchars($rec->body[$i])."n";
    }
    $rec->close();

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn