| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407 | 
							- <?php
 
- /*~ class.pop3.php
 
- .---------------------------------------------------------------------------.
 
- |  Software: PHPMailer - PHP email class                                    |
 
- |   Version: 5.1                                                            |
 
- |   Contact: via sourceforge.net support pages (also www.codeworxtech.com)  |
 
- |      Info: http://phpmailer.sourceforge.net                               |
 
- |   Support: http://sourceforge.net/projects/phpmailer/                     |
 
- | ------------------------------------------------------------------------- |
 
- |     Admin: Andy Prevost (project admininistrator)                         |
 
- |   Authors: Andy Prevost (codeworxtech) codeworxtech@users.sourceforge.net |
 
- |          : Marcus Bointon (coolbru) coolbru@users.sourceforge.net         |
 
- |   Founder: Brent R. Matzelle (original founder)                           |
 
- | Copyright (c) 2004-2009, Andy Prevost. All Rights Reserved.               |
 
- | Copyright (c) 2001-2003, Brent R. Matzelle                                |
 
- | ------------------------------------------------------------------------- |
 
- |   License: Distributed under the Lesser General Public License (LGPL)     |
 
- |            http://www.gnu.org/copyleft/lesser.html                        |
 
- | This program is distributed in the hope that it will be useful - WITHOUT  |
 
- | ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or     |
 
- | FITNESS FOR A PARTICULAR PURPOSE.                                         |
 
- | ------------------------------------------------------------------------- |
 
- | We offer a number of paid services (www.codeworxtech.com):                |
 
- | - Web Hosting on highly optimized fast and secure servers                 |
 
- | - Technology Consulting                                                   |
 
- | - Oursourcing (highly qualified programmers and graphic designers)        |
 
- '---------------------------------------------------------------------------'
 
- */
 
- /**
 
-  * PHPMailer - PHP POP Before SMTP Authentication Class
 
-  * NOTE: Designed for use with PHP version 5 and up
 
-  * @package PHPMailer
 
-  * @author Andy Prevost
 
-  * @author Marcus Bointon
 
-  * @copyright 2004 - 2009 Andy Prevost
 
-  * @license http://www.gnu.org/copyleft/lesser.html Distributed under the Lesser General Public License (LGPL)
 
-  * @version $Id: class.pop3.php 444 2009-05-05 11:22:26Z coolbru $
 
-  */
 
- /**
 
-  * POP Before SMTP Authentication Class
 
-  * Version 5.0.0
 
-  *
 
-  * Author: Richard Davey (rich@corephp.co.uk)
 
-  * Modifications: Andy Prevost
 
-  * License: LGPL, see PHPMailer License
 
-  *
 
-  * Specifically for PHPMailer to allow POP before SMTP authentication.
 
-  * Does not yet work with APOP - if you have an APOP account, contact Richard Davey
 
-  * and we can test changes to this script.
 
-  *
 
-  * This class is based on the structure of the SMTP class originally authored by Chris Ryan
 
-  *
 
-  * This class is rfc 1939 compliant and implements all the commands
 
-  * required for POP3 connection, authentication and disconnection.
 
-  *
 
-  * @package PHPMailer
 
-  * @author Richard Davey
 
-  */
 
- class POP3 {
 
-   /**
 
-    * Default POP3 port
 
-    * @var int
 
-    */
 
-   public $POP3_PORT = 110;
 
-   /**
 
-    * Default Timeout
 
-    * @var int
 
-    */
 
-   public $POP3_TIMEOUT = 30;
 
-   /**
 
-    * POP3 Carriage Return + Line Feed
 
-    * @var string
 
-    */
 
-   public $CRLF = "\r\n";
 
-   /**
 
-    * Displaying Debug warnings? (0 = now, 1+ = yes)
 
-    * @var int
 
-    */
 
-   public $do_debug = 2;
 
-   /**
 
-    * POP3 Mail Server
 
-    * @var string
 
-    */
 
-   public $host;
 
-   /**
 
-    * POP3 Port
 
-    * @var int
 
-    */
 
-   public $port;
 
-   /**
 
-    * POP3 Timeout Value
 
-    * @var int
 
-    */
 
-   public $tval;
 
-   /**
 
-    * POP3 Username
 
-    * @var string
 
-    */
 
-   public $username;
 
-   /**
 
-    * POP3 Password
 
-    * @var string
 
-    */
 
-   public $password;
 
-   /////////////////////////////////////////////////
 
-   // PROPERTIES, PRIVATE AND PROTECTED
 
-   /////////////////////////////////////////////////
 
-   private $pop_conn;
 
-   private $connected;
 
-   private $error;     //  Error log array
 
-   /**
 
-    * Constructor, sets the initial values
 
-    * @access public
 
-    * @return POP3
 
-    */
 
-   public function __construct() {
 
-     $this->pop_conn  = 0;
 
-     $this->connected = false;
 
-     $this->error     = null;
 
-   }
 
-   /**
 
-    * Combination of public events - connect, login, disconnect
 
-    * @access public
 
-    * @param string $host
 
-    * @param integer $port
 
-    * @param integer $tval
 
-    * @param string $username
 
-    * @param string $password
 
-    */
 
-   public function Authorise ($host, $port = false, $tval = false, $username, $password, $debug_level = 0) {
 
-     $this->host = $host;
 
-     //  If no port value is passed, retrieve it
 
-     if ($port == false) {
 
-       $this->port = $this->POP3_PORT;
 
-     } else {
 
-       $this->port = $port;
 
-     }
 
-     //  If no port value is passed, retrieve it
 
-     if ($tval == false) {
 
-       $this->tval = $this->POP3_TIMEOUT;
 
-     } else {
 
-       $this->tval = $tval;
 
-     }
 
-     $this->do_debug = $debug_level;
 
-     $this->username = $username;
 
-     $this->password = $password;
 
-     //  Refresh the error log
 
-     $this->error = null;
 
-     //  Connect
 
-     $result = $this->Connect($this->host, $this->port, $this->tval);
 
-     if ($result) {
 
-       $login_result = $this->Login($this->username, $this->password);
 
-       if ($login_result) {
 
-         $this->Disconnect();
 
-         return true;
 
-       }
 
-     }
 
-     //  We need to disconnect regardless if the login succeeded
 
-     $this->Disconnect();
 
-     return false;
 
-   }
 
-   /**
 
-    * Connect to the POP3 server
 
-    * @access public
 
-    * @param string $host
 
-    * @param integer $port
 
-    * @param integer $tval
 
-    * @return boolean
 
-    */
 
-   public function Connect ($host, $port = false, $tval = 30) {
 
-     //  Are we already connected?
 
-     if ($this->connected) {
 
-       return true;
 
-     }
 
-     /*
 
-     On Windows this will raise a PHP Warning error if the hostname doesn't exist.
 
-     Rather than supress it with @fsockopen, let's capture it cleanly instead
 
-     */
 
-     set_error_handler(array(&$this, 'catchWarning'));
 
-     //  Connect to the POP3 server
 
-     $this->pop_conn = fsockopen($host,    //  POP3 Host
 
-                   $port,    //  Port #
 
-                   $errno,   //  Error Number
 
-                   $errstr,  //  Error Message
 
-                   $tval);   //  Timeout (seconds)
 
-     //  Restore the error handler
 
-     restore_error_handler();
 
-     //  Does the Error Log now contain anything?
 
-     if ($this->error && $this->do_debug >= 1) {
 
-       $this->displayErrors();
 
-     }
 
-     //  Did we connect?
 
-     if ($this->pop_conn == false) {
 
-       //  It would appear not...
 
-       $this->error = array(
 
-         'error' => "Failed to connect to server $host on port $port",
 
-         'errno' => $errno,
 
-         'errstr' => $errstr
 
-       );
 
-       if ($this->do_debug >= 1) {
 
-         $this->displayErrors();
 
-       }
 
-       return false;
 
-     }
 
-     //  Increase the stream time-out
 
-     //  Check for PHP 4.3.0 or later
 
-     if (version_compare(phpversion(), '5.0.0', 'ge')) {
 
-       stream_set_timeout($this->pop_conn, $tval, 0);
 
-     } else {
 
-       //  Does not work on Windows
 
-       if (substr(PHP_OS, 0, 3) !== 'WIN') {
 
-         socket_set_timeout($this->pop_conn, $tval, 0);
 
-       }
 
-     }
 
-     //  Get the POP3 server response
 
-     $pop3_response = $this->getResponse();
 
-     //  Check for the +OK
 
-     if ($this->checkResponse($pop3_response)) {
 
-     //  The connection is established and the POP3 server is talking
 
-     $this->connected = true;
 
-       return true;
 
-     }
 
-   }
 
-   /**
 
-    * Login to the POP3 server (does not support APOP yet)
 
-    * @access public
 
-    * @param string $username
 
-    * @param string $password
 
-    * @return boolean
 
-    */
 
-   public function Login ($username = '', $password = '') {
 
-     if ($this->connected == false) {
 
-       $this->error = 'Not connected to POP3 server';
 
-       if ($this->do_debug >= 1) {
 
-         $this->displayErrors();
 
-       }
 
-     }
 
-     if (empty($username)) {
 
-       $username = $this->username;
 
-     }
 
-     if (empty($password)) {
 
-       $password = $this->password;
 
-     }
 
-     $pop_username = "USER $username" . $this->CRLF;
 
-     $pop_password = "PASS $password" . $this->CRLF;
 
-     //  Send the Username
 
-     $this->sendString($pop_username);
 
-     $pop3_response = $this->getResponse();
 
-     if ($this->checkResponse($pop3_response)) {
 
-       //  Send the Password
 
-       $this->sendString($pop_password);
 
-       $pop3_response = $this->getResponse();
 
-       if ($this->checkResponse($pop3_response)) {
 
-         return true;
 
-       } else {
 
-         return false;
 
-       }
 
-     } else {
 
-       return false;
 
-     }
 
-   }
 
-   /**
 
-    * Disconnect from the POP3 server
 
-    * @access public
 
-    */
 
-   public function Disconnect () {
 
-     $this->sendString('QUIT');
 
-     fclose($this->pop_conn);
 
-   }
 
-   /////////////////////////////////////////////////
 
-   //  Private Methods
 
-   /////////////////////////////////////////////////
 
-   /**
 
-    * Get the socket response back.
 
-    * $size is the maximum number of bytes to retrieve
 
-    * @access private
 
-    * @param integer $size
 
-    * @return string
 
-    */
 
-   private function getResponse ($size = 128) {
 
-     $pop3_response = fgets($this->pop_conn, $size);
 
-     return $pop3_response;
 
-   }
 
-   /**
 
-    * Send a string down the open socket connection to the POP3 server
 
-    * @access private
 
-    * @param string $string
 
-    * @return integer
 
-    */
 
-   private function sendString ($string) {
 
-     $bytes_sent = fwrite($this->pop_conn, $string, strlen($string));
 
-     return $bytes_sent;
 
-   }
 
-   /**
 
-    * Checks the POP3 server response for +OK or -ERR
 
-    * @access private
 
-    * @param string $string
 
-    * @return boolean
 
-    */
 
-   private function checkResponse ($string) {
 
-     if (substr($string, 0, 3) !== '+OK') {
 
-       $this->error = array(
 
-         'error' => "Server reported an error: $string",
 
-         'errno' => 0,
 
-         'errstr' => ''
 
-       );
 
-       if ($this->do_debug >= 1) {
 
-         $this->displayErrors();
 
-       }
 
-       return false;
 
-     } else {
 
-       return true;
 
-     }
 
-   }
 
-   /**
 
-    * If debug is enabled, display the error message array
 
-    * @access private
 
-    */
 
-   private function displayErrors () {
 
-     echo '<pre>';
 
-     foreach ($this->error as $single_error) {
 
-       print_r($single_error);
 
-     }
 
-     echo '</pre>';
 
-   }
 
-   /**
 
-    * Takes over from PHP for the socket warning handler
 
-    * @access private
 
-    * @param integer $errno
 
-    * @param string $errstr
 
-    * @param string $errfile
 
-    * @param integer $errline
 
-    */
 
-   private function catchWarning ($errno, $errstr, $errfile, $errline) {
 
-     $this->error[] = array(
 
-       'error' => "Connecting to the POP3 server raised a PHP warning: ",
 
-       'errno' => $errno,
 
-       'errstr' => $errstr
 
-     );
 
-   }
 
-   //  End of class
 
- }
 
- ?>
 
 
  |