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

首頁 > 編程 > PHP > 正文

PHP收郵件receiveMail

2020-03-22 19:20:00
字體:
來源:轉載
供稿:網友
  • 用PHP來發郵件,相信大家都不陌生,但讀取收件箱的話,接觸就少了,這次總結下自己的經驗,希望可以幫助大家.

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

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

    1.文件結構

    2.郵件類 ./mailreceived/receiveMail.html' target='_blank'>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 alt="" src="'.$path.$imageList[$filename[0]].'" style="border: none;" />', $body);			}		}		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 backgroundset_time_limit(0); // run script foreverdate_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 即可PHP編程

    鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

  • 發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
    日韩欧美中文第一页| 日韩国产欧美区| 菠萝蜜影院一区二区免费| 久久久999国产精品| 性视频1819p久久| 精品久久中文字幕久久av| 国产一区二区三区毛片| 日韩的一区二区| 亚洲欧美999| 精品女厕一区二区三区| 亚洲自拍欧美另类| 亚洲人成绝费网站色www| 亚洲免费一级电影| 久久久精品2019中文字幕神马| 一个人www欧美| 国产成人久久精品| 成人激情在线观看| 亚洲国产精品久久久久秋霞蜜臀| 欧美一级电影在线| 日韩av电影在线播放| 91国产中文字幕| 欧美日韩一区免费| 日韩电影中文字幕| 欧美日韩午夜激情| 欧美日韩国内自拍| 热久久美女精品天天吊色| 欧美精品videosex牲欧美| 97视频免费在线看| 欧美精品生活片| 91久久国产综合久久91精品网站| 91在线播放国产| 精品国偷自产在线| 久久精品国产亚洲精品| 欧美精品成人91久久久久久久| 欧美成人午夜激情视频| 亚洲伊人久久综合| 国产成人精品亚洲精品| 国产99久久精品一区二区 夜夜躁日日躁| 亚洲视频综合网| 91久久久久久| 欧美高跟鞋交xxxxxhd| 成人国产在线视频| 国产一区二区日韩精品欧美精品| 中文字幕欧美专区| 亚洲精品综合精品自拍| 亚洲天堂成人在线视频| 亚洲第一精品久久忘忧草社区| 欧美极度另类性三渗透| 久久久最新网址| 欧美一级淫片丝袜脚交| 日韩精品在线第一页| 98视频在线噜噜噜国产| 亚洲欧美激情一区| 一本色道久久88精品综合| 日韩电影大全免费观看2023年上| 粉嫩老牛aⅴ一区二区三区| 色综合天天综合网国产成人网| 久久综合伊人77777| 国产在线观看精品| 45www国产精品网站| 国产精品亚洲综合天堂夜夜| 成人在线激情视频| 国产欧美日韩精品丝袜高跟鞋| 精品国产依人香蕉在线精品| 国产精品毛片a∨一区二区三区|国| 亚洲乱码一区av黑人高潮| 久久久av一区| 国产精品91在线观看| 亚洲精品国产精品国产自| 一本一本久久a久久精品牛牛影视| 亚洲第一页自拍| 久久人人爽人人爽人人片av高请| 国产免费一区二区三区在线观看| 亚洲系列中文字幕| 中文字幕在线看视频国产欧美在线看完整| 欧美激情网友自拍| 久久久电影免费观看完整版| 亚洲最新av在线网站| 国产欧美一区二区白浆黑人| 久久人人爽国产| 97高清免费视频| 精品调教chinesegay| 久久久999精品视频| 777777777亚洲妇女| 性欧美在线看片a免费观看| 欧美精品999| 日韩在线不卡视频| 欧美第一黄网免费网站| 欧美极品少妇xxxxx| 中文字幕一区二区精品| 欧美激情欧美狂野欧美精品| 亚洲激情视频在线观看| 亚洲香蕉伊综合在人在线视看| 亚洲国产成人91精品| 国产精欧美一区二区三区| 亚洲网站在线播放| 欧美乱妇40p| 亚洲大胆人体视频| 亚洲综合一区二区不卡| 日韩av中文字幕在线播放| 亚洲国产精品电影| 亚洲男人的天堂在线| 亚洲欧美日韩第一区| 久久久国产91| 羞羞色国产精品| 欧美一区二区三区艳史| 欧美做受高潮电影o| 国产精品女主播视频| 中日韩午夜理伦电影免费| 一区二区欧美在线| 欧美富婆性猛交| 91精品国产综合久久久久久久久| 国产一区二区三区在线播放免费观看| 日韩电影中文字幕| 国产国语刺激对白av不卡| 国产成人精品久久| 91在线免费观看网站| 国产亚洲激情在线| 亚洲天堂一区二区三区| 日韩在线播放av| 少妇久久久久久| 97超级碰在线看视频免费在线看| 亚洲欧美日韩天堂一区二区| 午夜精品久久久久久久男人的天堂| 色yeye香蕉凹凸一区二区av| 久久成人这里只有精品| 日韩激情片免费| 亚洲精品国精品久久99热| 国产91色在线|| 九九九热精品免费视频观看网站| 亚洲欧美中文在线视频| 欧洲美女7788成人免费视频| 日韩精品免费综合视频在线播放| 成人欧美一区二区三区黑人孕妇| www国产91| 欧洲午夜精品久久久| 8x拔播拔播x8国产精品| 欧美午夜性色大片在线观看| 九九热精品视频| 日韩精品在线免费观看视频| 亚洲一区二区三区在线免费观看| 日韩亚洲欧美中文高清在线| 在线观看国产精品日韩av| 国产日产欧美a一级在线| 在线电影欧美日韩一区二区私密| 中国china体内裑精亚洲片| 欧美日产国产成人免费图片| 国产精品福利网| 日韩国产高清污视频在线观看| 精品国产一区二区三区久久狼黑人| 日韩av在线免费观看一区| 亚洲天堂av综合网| 欧美日韩国产色| 亚洲精品日韩丝袜精品| 国产精品久久久久久搜索| 国产一区二区三区中文| 国产午夜精品免费一区二区三区| 久久久国产精品免费| 久久久久久国产精品久久| 精品国产91久久久久久老师| 日本国产一区二区三区| 亚洲亚裔videos黑人hd| 欧美日韩精品在线观看| 2018国产精品视频|