亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

PHP receiveMail實現收郵件功能

2024-05-05 00:03:23
字體:
來源:轉載
供稿:網友

用PHP來發郵件,相信大家都不陌生,但讀取收件箱的話,接觸就少了,這次總結下自己的經驗,希望可以幫助大家.

注意:

1.PHP讀取收件箱主要是利用imap擴展,所以在使用以下方法前,必須開啟imap擴展模塊的支持.

2.此方法支持中文,不會亂碼,需要保持所有文件的編碼的一致性

1.文件結構

PHP,郵件,receiveMail

2.郵件類 ./mailreceived/receiveMail.class.php

./mailreceived/receiveMail.class.php 文件內容如下:

<?php // Main ReciveMail Class File - Version 1.0 (03-06-2015) /*  * File: recivemail.class.php  * Description: Reciving mail With Attechment  * Version: 1.1  * Created: 03-06-2015  * Author: Sara Zhou  */ class receiveMail {   var $server='';   var $username='';   var $password='';      var $marubox='';                var $email='';         function receiveMail($username,$password,$EmailAddress,$mailserver='localhost',$servertype='pop',$port='110',$ssl = false) //Constructure   {     if($servertype=='imap')     {       if($port=='') $port='143';        $strConnect='{'.$mailserver.':'.$port. '}INBOX';      }     else     {       $strConnect='{'.$mailserver.':'.$port. '/pop3'.($ssl ? "/ssl" : "").'}INBOX';      }     $this->server      =  $strConnect;     $this->username     =  $username;     $this->password     =  $password;     $this->email     =  $EmailAddress;   }   function connect() //Connect To the Mail Box   {     $this->marubox=@imap_open($this->server,$this->username,$this->password);          if(!$this->marubox)     {       return false; //     echo "Error: Connecting to mail server"; //     exit;     }     return true;   }         function getHeaders($mid) // Get Header info   {     if(!$this->marubox)       return false;      $mail_header=imap_header($this->marubox,$mid);     $sender=$mail_header->from[0];     $sender_replyto=$mail_header->reply_to[0];     if(strtolower($sender->mailbox)!='mailer-daemon' && strtolower($sender->mailbox)!='postmaster')     {       $subject=$this->decode_mime($mail_header->subject);        $ccList=array();       foreach ($mail_header->cc as $k => $v)       {         $ccList[]=$v->mailbox.'@'.$v->host;       }       $toList=array();       foreach ($mail_header->to as $k => $v)       {         $toList[]=$v->mailbox.'@'.$v->host;       }       $ccList=implode(",", $ccList);       $toList=implode(",", $toList);       $mail_details=array(           'fromBy'=>strtolower($sender->mailbox).'@'.$sender->host,           'fromName'=>$this->decode_mime($sender->personal),           'ccList'=>$ccList,//strtolower($sender_replyto->mailbox).'@'.$sender_replyto->host,           'toNameOth'=>$this->decode_mime($sender_replyto->personal),           'subject'=>$subject,           'mailDate'=>date("Y-m-d H:i:s",$mail_header->udate),           'udate'=>$mail_header->udate,           'toList'=>$toList//strtolower($mail_header->to[0]->mailbox).'@'.$mail_header->to[0]->host //         'to'=>strtolower($mail_header->toaddress)         );     }     return $mail_details;   }   function get_mime_type(&$structure) //Get Mime type Internal Private Use   {      $primary_mime_type = array("TEXT", "MULTIPART", "MESSAGE", "APPLICATION", "AUDIO", "IMAGE", "VIDEO", "OTHER");           if($structure->subtype && $structure->subtype!="PNG") {        return $primary_mime_type[(int) $structure->type] . '/' . $structure->subtype;      }      return "TEXT/PLAIN";    }    function get_part($stream, $msg_number, $mime_type, $structure = false, $part_number = false) //Get Part Of Message Internal Private Use   {           if(!$structure) {        $structure = imap_fetchstructure($stream, $msg_number);      }      if($structure) {        if($mime_type == $this->get_mime_type($structure))       {          if(!$part_number)          {            $part_number = "1";          }          $text = imap_fetchbody($stream, $msg_number, $part_number);                  if($structure->encoding == 3)         {           return imap_base64($text); //         if ($structure->parameters[0]->value!="utf-8") //         { //           return imap_base64($text); //         } //         else //         { //           return imap_base64($text); //         }         }         else if($structure->encoding == 4)         {           return iconv('gb2312','utf8',imap_qprint($text));         }         else         {           return iconv('gb2312','utf8',$text);         }       }        if($structure->type == 1) /* multipart */        {          while(list($index, $sub_structure) = each($structure->parts))         {            if($part_number)           {              $prefix = $part_number . '.';            }            $data = $this->get_part($stream, $msg_number, $mime_type, $sub_structure, $prefix . ($index + 1));            if($data)           {              return $data;            }          }        }      }     return false;    }    function getTotalMails() //Get Total Number off Unread Email In Mailbox   {     if(!$this->marubox)       return false;  //   return imap_headers($this->marubox);     return imap_num_recent($this->marubox);   }      function GetAttach($mid,$path) // Get Atteced File from Mail   {     if(!$this->marubox)       return false;      $struckture = imap_fetchstructure($this->marubox,$mid);          $files=array();     if($struckture->parts)     {       foreach($struckture->parts as $key => $value)       {         $enc=$struckture->parts[$key]->encoding;                  //取郵件附件         if($struckture->parts[$key]->ifdparameters)         {           //命名附件,轉碼           $name=$this->decode_mime($struckture->parts[$key]->dparameters[0]->value);                    $extend =explode("." , $name);           $file['extension'] = $extend[count($extend)-1];           $file['pathname'] = $this->setPathName($key, $file['extension']);           $file['title']   = !empty($name) ? htmlspecialchars($name) : str_replace('.' . $file['extension'], '', $name);           $file['size']   = $struckture->parts[$key]->dparameters[1]->value; //         $file['tmpname']  = $struckture->parts[$key]->dparameters[0]->value;           if(@$struckture->parts[$key]->disposition=="ATTACHMENT")           {             $file['type']   = 1;              }           else           {             $file['type']   = 0;           }                 $files[] = $file;                                $message = imap_fetchbody($this->marubox,$mid,$key+1);           if ($enc == 0)             $message = imap_8bit($message);           if ($enc == 1)             $message = imap_8bit ($message);           if ($enc == 2)             $message = imap_binary ($message);           if ($enc == 3)//圖片             $message = imap_base64 ($message);            if ($enc == 4)             $message = quoted_printable_decode($message);           if ($enc == 5)             $message = $message;           $fp=fopen($path.$file['pathname'],"w");           fwrite($fp,$message);           fclose($fp);                    }         // 處理內容中包含圖片的部分         if($struckture->parts[$key]->parts)         {           foreach($struckture->parts[$key]->parts as $keyb => $valueb)           {             $enc=$struckture->parts[$key]->parts[$keyb]->encoding;             if($struckture->parts[$key]->parts[$keyb]->ifdparameters)             {               //命名圖片               $name=$this->decode_mime($struckture->parts[$key]->parts[$keyb]->dparameters[0]->value);               $extend =explode("." , $name);               $file['extension'] = $extend[count($extend)-1];               $file['pathname'] = $this->setPathName($key, $file['extension']);               $file['title']   = !empty($name) ? htmlspecialchars($name) : str_replace('.' . $file['extension'], '', $name);               $file['size']   = $struckture->parts[$key]->parts[$keyb]->dparameters[1]->value; //             $file['tmpname']  = $struckture->parts[$key]->dparameters[0]->value;               $file['type']   = 0;               $files[] = $file;                              $partnro = ($key+1).".".($keyb+1);                              $message = imap_fetchbody($this->marubox,$mid,$partnro);               if ($enc == 0)                   $message = imap_8bit($message);               if ($enc == 1)                   $message = imap_8bit ($message);               if ($enc == 2)                   $message = imap_binary ($message);               if ($enc == 3)                   $message = imap_base64 ($message);               if ($enc == 4)                   $message = quoted_printable_decode($message);               if ($enc == 5)                   $message = $message;               $fp=fopen($path.$file['pathname'],"w");               fwrite($fp,$message);               fclose($fp);             }           }         }               }     }     //move mail to taskMailBox     $this->move_mails($mid, $this->marubox);         return $files;   }      function getBody($mid,&$path,$imageList) // Get Message Body   {     if(!$this->marubox)       return false;      $body = $this->get_part($this->marubox, $mid, "TEXT/HTML");     if ($body == "")       $body = $this->get_part($this->marubox, $mid, "TEXT/PLAIN");     if ($body == "") {        return "";     }     //處理圖片     $body=$this->embed_images($body,$path,$imageList);     return $body;   }      function embed_images(&$body,&$path,$imageList)   {     // get all img tags     preg_match_all('/<img.*?>/', $body, $matches);     if (!isset($matches[0])) return;          foreach ($matches[0] as $img)     {       // replace image web path with local path       preg_match('/src="(.*?)"/', $img, $m);       if (!isset($m[1])) continue;       $arr = parse_url($m[1]);       if (!isset($arr['scheme']) || !isset($arr['path']))continue;        //     if (!isset($arr['host']) || !isset($arr['path']))continue;       if ($arr['scheme']!="http")       {         $filename=explode("@", $arr['path']);         $body = str_replace($img, '<img      }     }     return $body;   }      function deleteMails($mid) // Delete That Mail   {     if(!$this->marubox)       return false;          imap_delete($this->marubox,$mid);   }   function close_mailbox() //Close Mail Box   {     if(!$this->marubox)       return false;      imap_close($this->marubox,CL_EXPUNGE);   }      //移動郵件到指定分組   function move_mails($msglist,$mailbox)   {     if(!$this->marubox)       return false;        imap_mail_move($this->marubox, $msglist, $mailbox);   }      function creat_mailbox($mailbox)   {     if(!$this->marubox)       return false;          //imap_renamemailbox($imap_stream, $old_mbox, $new_mbox);     imap_create($this->marubox, $mailbox);   }      /*    * decode_mime()轉換郵件標題的字符編碼,處理亂碼    */   function decode_mime($str){     $str=imap_mime_header_decode($str);     return $str[0]->text;     echo "str";print_r($str);     if ($str[0]->charset!="default")     {echo "==".$str[0]->text;       return iconv($str[0]->charset,'utf8',$str[0]->text);     }     else     {       return $str[0]->text;     }   }      /**    * Set path name of the uploaded file to be saved.    *    * @param int  $fileID    * @param string $extension    * @access public    * @return string    */   public function setPathName($fileID, $extension)   {     return date('Ym/dHis', time()) . $fileID . mt_rand(0, 10000) . '.' . $extension;   }    } ?> 

3.控制層./mailreceived/mailControl.php

 ./mailreceived/mailControl.php 內容如下:

<? /*  * File: mailControl.php  * Description: Received Mail Example  * Created: 03-06-2015  * Author: Sara Zhou  */ @header('Content-type: text/html;charset=UTF-8'); error_reporting(0); ignore_user_abort(); // run script in background set_time_limit(0); // run script forever date_default_timezone_set('Asia/Shanghai'); include("receivemail.class.php"); class mailControl {   //定義系統常量   //用戶名   public $mailAccount = "123456@qq.com";   public $mailPasswd = "12345";   public $mailAddress = "123456@qq.com";   public $mailServer = "pop.qq.com";   public $serverType = "pop3";   public $port = "110";   public $now    = 0;   public $savePath = '';   public $webPath  = "../upload/";      public function __construct()   {     $this->now = date("Y-m-d H:i:s",time());          $this->setSavePath();   }      /**    * mail Received()讀取收件箱郵件    *    * @param    * @access public    * @return result    */   public function mailReceived()   {     // Creating a object of reciveMail Class     $obj= new receivemail($this->mailAccount,$this->mailPasswd,$this->mailAddress,$this->mailServer,$this->serverType,$this->port,false);           //Connect to the Mail Box     $res=$obj->connect();     //If connection fails give error message and exit     if (!$res)     {       return array("msg"=>"Error: Connecting to mail server");     }     // Get Total Number of Unread Email in mail box     $tot=$obj->getTotalMails(); //Total Mails in Inbox Return integer value     if($tot < 1) { //如果信件數為0,顯示信息       return array("msg"=>"No Message for ".$this->mailAccount);     }     else     {       $res=array("msg"=>"Total Mails:: $tot<br>");          for($i=$tot;$i>0;$i--)       {         $head=$obj->getHeaders($i); // Get Header Info Return Array Of Headers **Array Keys are (subject,to,toOth,toNameOth,from,fromName)              //處理郵件附件         $files=$obj->GetAttach($i,$this->savePath); // 獲取郵件附件,返回的郵件附件信息數組                  $imageList=array();         foreach($files as $k => $file)         {                 //type=1為附件,0為郵件內容圖片           if($file['type'] == 0)           {             $imageList[$file['title']]=$file['pathname'];           }         }         $body = $obj->getBody($i,$this->webPath,$imageList);                  $res['mail'][]=array('head'=>$head,'body'=>$body,"attachList"=>$files);        //       $obj->deleteMails($i); // Delete Mail from Mail box //       $obj->move_mails($i,"taskMail");       }       $obj->close_mailbox();  //Close Mail Box       return $res;     }   }       /**   * creatBox   *   * @access public   * @return void   */   public function creatBox($boxName)   {     // Creating a object of reciveMail Class     $obj= new receivemail($this->mailAccount,$this->mailPasswd,$this->mailAddress,$this->mailServer,$this->serverType,$this->port,false);     $obj->creat_mailbox($boxName);   }      /**    * Set save path.    *    * @access public    * @return void    */   public function setSavePath()   {     $savePath = "../upload/" . date('Ym/', $this->now);     if(!file_exists($savePath))     {       @mkdir($savePath, 0777, true);       touch($savePath . 'index.html');     }     $this->savePath = dirname($savePath) . '/';   }     }   $obj=new mailControl();   //收取郵件   $res=$obj->mailReceived();   echo "<pre>";print_r($res);      //創建郵箱 // $obj->creatBox("readyBox"); ?> 

4.訪問地址:http://localhost/test.cn/mailreceived/mailControl.php 即可

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
7777kkkk成人观看| 全球成人中文在线| 一本大道久久加勒比香蕉| 精品国产欧美一区二区三区成人| 国内自拍欧美激情| 亚洲xxx自由成熟| 亚洲最大成人免费视频| 国产精品大陆在线观看| 懂色av影视一区二区三区| 亚洲精品日韩在线| 久久天天躁夜夜躁狠狠躁2022| 91中文在线视频| 欧美性在线视频| 国产精品嫩草影院久久久| 欧美专区在线视频| 国产成人短视频| 日韩毛片在线观看| 国产精品极品尤物在线观看| 国产一区二区日韩精品欧美精品| 尤物99国产成人精品视频| 欧美夜福利tv在线| 日韩高清不卡av| 久久精品国产精品| 亚洲欧美综合精品久久成人| 美女性感视频久久久| 亚洲色图五月天| 日韩中文在线不卡| 久久精品国产亚洲7777| 国产在线观看不卡| 色噜噜亚洲精品中文字幕| 亚洲女同精品视频| 精品久久久一区| 懂色av一区二区三区| 国产精品69精品一区二区三区| 精品日韩视频在线观看| 色狠狠久久aa北条麻妃| 亚洲另类图片色| 亚洲欧洲日韩国产| 日韩人体视频一二区| 久久在线观看视频| 91丨九色丨国产在线| 亚洲成人三级在线| 亚洲国产99精品国自产| 欧美激情国产精品| www.亚洲免费视频| 国产精品久久久av久久久| 久久精品一本久久99精品| 欧美日韩在线视频首页| 国产精品日韩电影| 亚洲精品之草原avav久久| 日韩久久精品成人| 国产亚洲精品日韩| 日韩欧美在线免费观看| 日韩电影在线观看免费| 在线日韩精品视频| 日韩精品丝袜在线| 91地址最新发布| 少妇激情综合网| 欧美性xxxxhd| 亚洲色图欧美制服丝袜另类第一页| 亚洲精品网址在线观看| 高清一区二区三区日本久| 欧美性一区二区三区| 午夜精品一区二区三区在线视| 久久久久免费精品国产| 日本午夜精品理论片a级appf发布| 亚洲激情免费观看| 国产精品91免费在线| 在线播放精品一区二区三区| 欧美一级高清免费播放| 国产精品永久免费视频| 亚洲国产成人一区| 欧美激情一二区| 国产精自产拍久久久久久| 久久99亚洲精品| 中文国产成人精品| 亚洲午夜未满十八勿入免费观看全集| 成人乱人伦精品视频在线观看| 国产精品女人网站| 深夜成人在线观看| 欧美成人国产va精品日本一级| 日本精品久久久| 日韩电影视频免费| 欧美日韩国产专区| 国产精品高潮视频| 亚洲精品久久久久中文字幕欢迎你| 国产日韩在线看片| 4p变态网欧美系列| 欧美国产欧美亚洲国产日韩mv天天看完整| 亚洲a∨日韩av高清在线观看| 国产一区二区三区视频在线观看| 992tv成人免费影院| 国产精品白嫩美女在线观看| 欧美精品videofree1080p| 久久久国产精品视频| 欧美精品video| 国产极品jizzhd欧美| 日本久久久久久久久| 成人444kkkk在线观看| 136fldh精品导航福利| 欧美黑人性生活视频| 成人中心免费视频| 久久91亚洲人成电影网站| 亚洲午夜久久久影院| 日韩欧美在线观看视频| 在线看日韩欧美| 欧美一级电影久久| 欧美日韩精品在线| 伊人伊人伊人久久| 色777狠狠综合秋免鲁丝| 久久久久99精品久久久久| 欧美视频一区二区三区…| 精品偷拍一区二区三区在线看| 欧美日韩在线免费观看| 日韩av在线免费播放| 国产亚洲精品高潮| 性欧美亚洲xxxx乳在线观看| 欧美第一黄网免费网站| 国产精品∨欧美精品v日韩精品| 亚洲黄色www| 69**夜色精品国产69乱| 国产黑人绿帽在线第一区| 国产精品福利观看| 成人网在线观看| 日韩欧美第一页| 精品国偷自产在线视频99| 欧美日韩加勒比精品一区| 国产精品扒开腿做爽爽爽男男| 美女久久久久久久久久久| 日韩精品在线看| 欧美黑人又粗大| 久久九九精品99国产精品| 亚洲在线观看视频| 亚洲成色777777在线观看影院| 精品国产精品三级精品av网址| 92看片淫黄大片欧美看国产片| 亚洲精品国产综合区久久久久久久| 欧美一区二区三区免费观看| 欧美日韩亚洲精品内裤| 欧美性videos高清精品| 国产成人一区二区三区电影| 欧美极品欧美精品欧美视频| 欧美亚洲激情视频| 日韩成人在线免费观看| 欧美最猛性xxxxx亚洲精品| 国产亚洲精品久久久优势| 亚洲japanese制服美女| 亚洲国产精品一区二区久| 欧美激情中文字幕在线| 欧美巨猛xxxx猛交黑人97人| 97视频色精品| 日韩有码在线电影| 国产精品wwww| 在线播放亚洲激情| 成人福利网站在线观看| 亚洲欧洲国产一区| 最近2019中文字幕一页二页| 黄色成人在线免费| 久久综合九色九九| 欧美激情视频网站| 一区二区三区动漫| 国内精品久久影院| 欧美激情一区二区三区在线视频观看| 欧洲s码亚洲m码精品一区|