⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pop3.class.php

📁 ajax高级应用
💻 PHP
字号:
<?php
//error_reporting(0);

class Pop3 {
	var $_server;
	var $_userName;
	var $_passWord;
	var $_port;
	var $_connection;
	var $messages;
	var $mailCount;
	
	function Pop3($server, $userName, $passWord, $port = 110) {
		$this->_server		= $server;
		$this->_userName	= $userName;
		$this->_passWord	= $passWord;
		$this->_port		= $port;
		$this->messages		= array();
	}
	
	function login() {
		//If the server property's been set
		//We should be good to go
		if (!empty($this->_server)) {
		    $this->_connection = @fsockopen($this->_server, $this->_port);
			$connectionResponse = @fgets($this->_connection,512);
        
			//If the connection is successful
			if ($this->_connection) {

				//Send the username
			    @fputs($this->_connection, "USER " . $this->_userName."\r\n");
  				$userResponse = @fgets($this->_connection,512);

				//Send the password
  				@fputs($this->_connection, "PASS ".$this->_passWord."\r\n");
				$passResponse = @fgets($this->_connection,512);

				//If the response is +OK, then login is successful.
  				if(strstr($passResponse, "+OK")) {
					//@fputs($this->_connection,"STAT\r\n");
 					//$statResponse = split(" ",@fgets($this->_connection,512));

					$this->getEmailHeaders();
					
					//Get the number of emails
					$this->mailCount = count($this->messages);
					
					//echo $this->mailCount = count($this->messages);
					
					return true;
				}
			}
		}
		
		//We shouldn't make it here. If we do, then something failed.
		return false;
	}
	
	function logoff() {
		@fwrite($this->_connection, "QUIT\r\n");
		$reply = fgets($this->_connection, 512);
		$reply = $this->_strip_clf($reply);
				
		@fclose($this->_connection);
		unset($this->_connection);
	}
	
	function _strip_clf ($text = "")
	{
		// Strips \r\n from server responses
		if(empty($text)) { return $text; }
		$stripped = ereg_replace("\r","",$text);
		$stripped = ereg_replace("\n","",$stripped);
		return $stripped;
	}
	
	function getEmailHeaders() {
 		@fputs($this->_connection,"STAT\r\n");
 		$statResponse = split(" ",@fgets($this->_connection,512));
		
		if($statResponse[0] != "+OK")
			return false;//"391";
			
		for($i = 0; $i < ($statResponse[1]); $i++) {
      		
			$actualNumber = $i+1;
			@fputs($this->_connection, "LIST $actualNumber\r\n");
			$listResponse = @fgets($this->_connection,512);

			$header = "";
			fputs($this->_connection,"TOP $actualNumber 0\r\n");
			
			while( ($rs = fgets($this->_connection,512) ) != ".\r\n")
				$header .= $rs;
				
			$this->messages[$i] = new Pop3Message($header);
		}
	}
	
	function getEmail($num) {
		$message = Array();
    	$actualNumber = $num+1;
		
		@fputs($this->_connection,"RETR $actualNumber\r\n");
		$retrResponse = @fgets($this->_connection,512);
		if (strstr($retrResponse,"+OK")) {
			while(($rs = @fgets($this->_connection,512))!="\r\n") {}
			while(($rs = @fgets($this->_connection,512))!=".\r\n")
				$message[] = trim($rs);
			
			$this->deleteEmail($actualNumber);
		} else {
			//Error
		}
		
		$this->messages[$num]->_parseEmail(null,$message);

		
	}
	
	function getEmails() {
		for ($i = 0; $i < $this->mailCount; $i++) {
			$this->getEmail($i);
		}
	}
	
	function deleteEmail($num) {
		@fputs($this->_connection,"DELE $num\r\n");
   		$del = split(" ", @fgets($this->_connection,512));
	}
}

?>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -