109
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
1 |
<?php |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
2 |
/** |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
3 |
* mail_fetch/setup.php |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
4 |
* |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
5 |
* @package SquirrelMail |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
6 |
* |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
7 |
* @copyright (c) 1999-2006 The SquirrelMail Project Team |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
8 |
* |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
9 |
* @copyright (c) 1999 CDI (cdi@thewebmasters.net) All Rights Reserved |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
10 |
* Modified by Philippe Mingo 2001 mingo@rotedic.com |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
11 |
* An RFC 1939 compliant wrapper class for the POP3 protocol. |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
12 |
* |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
13 |
* Licensed under the GNU GPL. For full terms see the file COPYING. |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
14 |
* |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
15 |
* pop3 class |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
16 |
* |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
17 |
* $Id: class-pop3.php 9503 2008-11-03 23:25:11Z ryan $ |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
18 |
*/ |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
19 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
20 |
class POP3 { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
21 |
var $ERROR = ''; // Error string. |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
22 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
23 |
var $TIMEOUT = 60; // Default timeout before giving up on a |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
24 |
// network operation. |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
25 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
26 |
var $COUNT = -1; // Mailbox msg count |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
27 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
28 |
var $BUFFER = 512; // Socket buffer for socket fgets() calls. |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
29 |
// Per RFC 1939 the returned line a POP3 |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
30 |
// server can send is 512 bytes. |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
31 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
32 |
var $FP = ''; // The connection to the server's |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
33 |
// file descriptor |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
34 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
35 |
var $MAILSERVER = ''; // Set this to hard code the server name |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
36 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
37 |
var $DEBUG = FALSE; // set to true to echo pop3 |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
38 |
// commands and responses to error_log |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
39 |
// this WILL log passwords! |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
40 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
41 |
var $BANNER = ''; // Holds the banner returned by the |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
42 |
// pop server - used for apop() |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
43 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
44 |
var $ALLOWAPOP = FALSE; // Allow or disallow apop() |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
45 |
// This must be set to true |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
46 |
// manually |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
47 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
48 |
function POP3 ( $server = '', $timeout = '' ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
49 |
settype($this->BUFFER,"integer"); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
50 |
if( !empty($server) ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
51 |
// Do not allow programs to alter MAILSERVER |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
52 |
// if it is already specified. They can get around |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
53 |
// this if they -really- want to, so don't count on it. |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
54 |
if(empty($this->MAILSERVER)) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
55 |
$this->MAILSERVER = $server; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
56 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
57 |
if(!empty($timeout)) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
58 |
settype($timeout,"integer"); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
59 |
$this->TIMEOUT = $timeout; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
60 |
if (!ini_get('safe_mode')) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
61 |
set_time_limit($timeout); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
62 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
63 |
return true; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
64 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
65 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
66 |
function update_timer () { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
67 |
if (!ini_get('safe_mode')) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
68 |
set_time_limit($this->TIMEOUT); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
69 |
return true; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
70 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
71 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
72 |
function connect ($server, $port = 110) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
73 |
// Opens a socket to the specified server. Unless overridden, |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
74 |
// port defaults to 110. Returns true on success, false on fail |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
75 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
76 |
// If MAILSERVER is set, override $server with it's value |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
77 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
78 |
if (!isset($port) || !$port) {$port = 110;} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
79 |
if(!empty($this->MAILSERVER)) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
80 |
$server = $this->MAILSERVER; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
81 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
82 |
if(empty($server)){ |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
83 |
$this->ERROR = "POP3 connect: " . _("No server specified"); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
84 |
unset($this->FP); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
85 |
return false; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
86 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
87 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
88 |
$fp = @fsockopen("$server", $port, $errno, $errstr); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
89 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
90 |
if(!$fp) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
91 |
$this->ERROR = "POP3 connect: " . _("Error ") . "[$errno] [$errstr]"; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
92 |
unset($this->FP); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
93 |
return false; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
94 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
95 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
96 |
socket_set_blocking($fp,-1); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
97 |
$this->update_timer(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
98 |
$reply = fgets($fp,$this->BUFFER); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
99 |
$reply = $this->strip_clf($reply); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
100 |
if($this->DEBUG) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
101 |
error_log("POP3 SEND [connect: $server] GOT [$reply]",0); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
102 |
if(!$this->is_ok($reply)) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
103 |
$this->ERROR = "POP3 connect: " . _("Error ") . "[$reply]"; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
104 |
unset($this->FP); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
105 |
return false; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
106 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
107 |
$this->FP = $fp; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
108 |
$this->BANNER = $this->parse_banner($reply); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
109 |
return true; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
110 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
111 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
112 |
function user ($user = "") { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
113 |
// Sends the USER command, returns true or false |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
114 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
115 |
if( empty($user) ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
116 |
$this->ERROR = "POP3 user: " . _("no login ID submitted"); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
117 |
return false; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
118 |
} elseif(!isset($this->FP)) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
119 |
$this->ERROR = "POP3 user: " . _("connection not established"); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
120 |
return false; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
121 |
} else { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
122 |
$reply = $this->send_cmd("USER $user"); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
123 |
if(!$this->is_ok($reply)) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
124 |
$this->ERROR = "POP3 user: " . _("Error ") . "[$reply]"; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
125 |
return false; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
126 |
} else |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
127 |
return true; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
128 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
129 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
130 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
131 |
function pass ($pass = "") { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
132 |
// Sends the PASS command, returns # of msgs in mailbox, |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
133 |
// returns false (undef) on Auth failure |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
134 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
135 |
if(empty($pass)) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
136 |
$this->ERROR = "POP3 pass: " . _("No password submitted"); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
137 |
return false; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
138 |
} elseif(!isset($this->FP)) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
139 |
$this->ERROR = "POP3 pass: " . _("connection not established"); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
140 |
return false; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
141 |
} else { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
142 |
$reply = $this->send_cmd("PASS $pass"); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
143 |
if(!$this->is_ok($reply)) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
144 |
$this->ERROR = "POP3 pass: " . _("Authentication failed") . " [$reply]"; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
145 |
$this->quit(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
146 |
return false; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
147 |
} else { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
148 |
// Auth successful. |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
149 |
$count = $this->last("count"); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
150 |
$this->COUNT = $count; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
151 |
return $count; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
152 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
153 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
154 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
155 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
156 |
function apop ($login,$pass) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
157 |
// Attempts an APOP login. If this fails, it'll |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
158 |
// try a standard login. YOUR SERVER MUST SUPPORT |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
159 |
// THE USE OF THE APOP COMMAND! |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
160 |
// (apop is optional per rfc1939) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
161 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
162 |
if(!isset($this->FP)) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
163 |
$this->ERROR = "POP3 apop: " . _("No connection to server"); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
164 |
return false; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
165 |
} elseif(!$this->ALLOWAPOP) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
166 |
$retVal = $this->login($login,$pass); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
167 |
return $retVal; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
168 |
} elseif(empty($login)) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
169 |
$this->ERROR = "POP3 apop: " . _("No login ID submitted"); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
170 |
return false; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
171 |
} elseif(empty($pass)) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
172 |
$this->ERROR = "POP3 apop: " . _("No password submitted"); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
173 |
return false; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
174 |
} else { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
175 |
$banner = $this->BANNER; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
176 |
if( (!$banner) or (empty($banner)) ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
177 |
$this->ERROR = "POP3 apop: " . _("No server banner") . ' - ' . _("abort"); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
178 |
$retVal = $this->login($login,$pass); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
179 |
return $retVal; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
180 |
} else { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
181 |
$AuthString = $banner; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
182 |
$AuthString .= $pass; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
183 |
$APOPString = md5($AuthString); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
184 |
$cmd = "APOP $login $APOPString"; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
185 |
$reply = $this->send_cmd($cmd); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
186 |
if(!$this->is_ok($reply)) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
187 |
$this->ERROR = "POP3 apop: " . _("apop authentication failed") . ' - ' . _("abort"); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
188 |
$retVal = $this->login($login,$pass); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
189 |
return $retVal; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
190 |
} else { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
191 |
// Auth successful. |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
192 |
$count = $this->last("count"); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
193 |
$this->COUNT = $count; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
194 |
return $count; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
195 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
196 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
197 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
198 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
199 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
200 |
function login ($login = "", $pass = "") { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
201 |
// Sends both user and pass. Returns # of msgs in mailbox or |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
202 |
// false on failure (or -1, if the error occurs while getting |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
203 |
// the number of messages.) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
204 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
205 |
if( !isset($this->FP) ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
206 |
$this->ERROR = "POP3 login: " . _("No connection to server"); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
207 |
return false; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
208 |
} else { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
209 |
$fp = $this->FP; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
210 |
if( !$this->user( $login ) ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
211 |
// Preserve the error generated by user() |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
212 |
return false; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
213 |
} else { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
214 |
$count = $this->pass($pass); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
215 |
if( (!$count) || ($count == -1) ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
216 |
// Preserve the error generated by last() and pass() |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
217 |
return false; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
218 |
} else |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
219 |
return $count; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
220 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
221 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
222 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
223 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
224 |
function top ($msgNum, $numLines = "0") { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
225 |
// Gets the header and first $numLines of the msg body |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
226 |
// returns data in an array with each returned line being |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
227 |
// an array element. If $numLines is empty, returns |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
228 |
// only the header information, and none of the body. |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
229 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
230 |
if(!isset($this->FP)) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
231 |
$this->ERROR = "POP3 top: " . _("No connection to server"); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
232 |
return false; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
233 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
234 |
$this->update_timer(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
235 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
236 |
$fp = $this->FP; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
237 |
$buffer = $this->BUFFER; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
238 |
$cmd = "TOP $msgNum $numLines"; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
239 |
fwrite($fp, "TOP $msgNum $numLines\r\n"); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
240 |
$reply = fgets($fp, $buffer); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
241 |
$reply = $this->strip_clf($reply); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
242 |
if($this->DEBUG) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
243 |
@error_log("POP3 SEND [$cmd] GOT [$reply]",0); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
244 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
245 |
if(!$this->is_ok($reply)) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
246 |
{ |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
247 |
$this->ERROR = "POP3 top: " . _("Error ") . "[$reply]"; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
248 |
return false; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
249 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
250 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
251 |
$count = 0; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
252 |
$MsgArray = array(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
253 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
254 |
$line = fgets($fp,$buffer); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
255 |
while ( !ereg("^\.\r\n",$line)) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
256 |
{ |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
257 |
$MsgArray[$count] = $line; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
258 |
$count++; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
259 |
$line = fgets($fp,$buffer); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
260 |
if(empty($line)) { break; } |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
261 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
262 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
263 |
return $MsgArray; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
264 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
265 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
266 |
function pop_list ($msgNum = "") { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
267 |
// If called with an argument, returns that msgs' size in octets |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
268 |
// No argument returns an associative array of undeleted |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
269 |
// msg numbers and their sizes in octets |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
270 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
271 |
if(!isset($this->FP)) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
272 |
{ |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
273 |
$this->ERROR = "POP3 pop_list: " . _("No connection to server"); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
274 |
return false; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
275 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
276 |
$fp = $this->FP; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
277 |
$Total = $this->COUNT; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
278 |
if( (!$Total) or ($Total == -1) ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
279 |
{ |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
280 |
return false; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
281 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
282 |
if($Total == 0) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
283 |
{ |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
284 |
return array("0","0"); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
285 |
// return -1; // mailbox empty |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
286 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
287 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
288 |
$this->update_timer(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
289 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
290 |
if(!empty($msgNum)) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
291 |
{ |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
292 |
$cmd = "LIST $msgNum"; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
293 |
fwrite($fp,"$cmd\r\n"); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
294 |
$reply = fgets($fp,$this->BUFFER); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
295 |
$reply = $this->strip_clf($reply); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
296 |
if($this->DEBUG) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
297 |
@error_log("POP3 SEND [$cmd] GOT [$reply]",0); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
298 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
299 |
if(!$this->is_ok($reply)) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
300 |
{ |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
301 |
$this->ERROR = "POP3 pop_list: " . _("Error ") . "[$reply]"; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
302 |
return false; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
303 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
304 |
list($junk,$num,$size) = preg_split('/\s+/',$reply); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
305 |
return $size; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
306 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
307 |
$cmd = "LIST"; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
308 |
$reply = $this->send_cmd($cmd); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
309 |
if(!$this->is_ok($reply)) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
310 |
{ |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
311 |
$reply = $this->strip_clf($reply); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
312 |
$this->ERROR = "POP3 pop_list: " . _("Error ") . "[$reply]"; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
313 |
return false; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
314 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
315 |
$MsgArray = array(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
316 |
$MsgArray[0] = $Total; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
317 |
for($msgC=1;$msgC <= $Total; $msgC++) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
318 |
{ |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
319 |
if($msgC > $Total) { break; } |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
320 |
$line = fgets($fp,$this->BUFFER); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
321 |
$line = $this->strip_clf($line); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
322 |
if(ereg("^\.",$line)) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
323 |
{ |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
324 |
$this->ERROR = "POP3 pop_list: " . _("Premature end of list"); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
325 |
return false; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
326 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
327 |
list($thisMsg,$msgSize) = preg_split('/\s+/',$line); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
328 |
settype($thisMsg,"integer"); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
329 |
if($thisMsg != $msgC) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
330 |
{ |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
331 |
$MsgArray[$msgC] = "deleted"; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
332 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
333 |
else |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
334 |
{ |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
335 |
$MsgArray[$msgC] = $msgSize; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
336 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
337 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
338 |
return $MsgArray; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
339 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
340 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
341 |
function get ($msgNum) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
342 |
// Retrieve the specified msg number. Returns an array |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
343 |
// where each line of the msg is an array element. |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
344 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
345 |
if(!isset($this->FP)) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
346 |
{ |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
347 |
$this->ERROR = "POP3 get: " . _("No connection to server"); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
348 |
return false; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
349 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
350 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
351 |
$this->update_timer(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
352 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
353 |
$fp = $this->FP; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
354 |
$buffer = $this->BUFFER; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
355 |
$cmd = "RETR $msgNum"; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
356 |
$reply = $this->send_cmd($cmd); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
357 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
358 |
if(!$this->is_ok($reply)) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
359 |
{ |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
360 |
$this->ERROR = "POP3 get: " . _("Error ") . "[$reply]"; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
361 |
return false; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
362 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
363 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
364 |
$count = 0; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
365 |
$MsgArray = array(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
366 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
367 |
$line = fgets($fp,$buffer); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
368 |
while ( !ereg("^\.\r\n",$line)) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
369 |
{ |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
370 |
if ( $line{0} == '.' ) { $line = substr($line,1); } |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
371 |
$MsgArray[$count] = $line; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
372 |
$count++; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
373 |
$line = fgets($fp,$buffer); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
374 |
if(empty($line)) { break; } |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
375 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
376 |
return $MsgArray; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
377 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
378 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
379 |
function last ( $type = "count" ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
380 |
// Returns the highest msg number in the mailbox. |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
381 |
// returns -1 on error, 0+ on success, if type != count |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
382 |
// results in a popstat() call (2 element array returned) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
383 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
384 |
$last = -1; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
385 |
if(!isset($this->FP)) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
386 |
{ |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
387 |
$this->ERROR = "POP3 last: " . _("No connection to server"); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
388 |
return $last; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
389 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
390 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
391 |
$reply = $this->send_cmd("STAT"); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
392 |
if(!$this->is_ok($reply)) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
393 |
{ |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
394 |
$this->ERROR = "POP3 last: " . _("Error ") . "[$reply]"; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
395 |
return $last; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
396 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
397 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
398 |
$Vars = preg_split('/\s+/',$reply); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
399 |
$count = $Vars[1]; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
400 |
$size = $Vars[2]; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
401 |
settype($count,"integer"); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
402 |
settype($size,"integer"); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
403 |
if($type != "count") |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
404 |
{ |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
405 |
return array($count,$size); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
406 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
407 |
return $count; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
408 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
409 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
410 |
function reset () { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
411 |
// Resets the status of the remote server. This includes |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
412 |
// resetting the status of ALL msgs to not be deleted. |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
413 |
// This method automatically closes the connection to the server. |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
414 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
415 |
if(!isset($this->FP)) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
416 |
{ |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
417 |
$this->ERROR = "POP3 reset: " . _("No connection to server"); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
418 |
return false; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
419 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
420 |
$reply = $this->send_cmd("RSET"); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
421 |
if(!$this->is_ok($reply)) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
422 |
{ |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
423 |
// The POP3 RSET command -never- gives a -ERR |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
424 |
// response - if it ever does, something truely |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
425 |
// wild is going on. |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
426 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
427 |
$this->ERROR = "POP3 reset: " . _("Error ") . "[$reply]"; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
428 |
@error_log("POP3 reset: ERROR [$reply]",0); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
429 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
430 |
$this->quit(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
431 |
return true; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
432 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
433 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
434 |
function send_cmd ( $cmd = "" ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
435 |
{ |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
436 |
// Sends a user defined command string to the |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
437 |
// POP server and returns the results. Useful for |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
438 |
// non-compliant or custom POP servers. |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
439 |
// Do NOT includ the \r\n as part of your command |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
440 |
// string - it will be appended automatically. |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
441 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
442 |
// The return value is a standard fgets() call, which |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
443 |
// will read up to $this->BUFFER bytes of data, until it |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
444 |
// encounters a new line, or EOF, whichever happens first. |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
445 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
446 |
// This method works best if $cmd responds with only |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
447 |
// one line of data. |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
448 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
449 |
if(!isset($this->FP)) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
450 |
{ |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
451 |
$this->ERROR = "POP3 send_cmd: " . _("No connection to server"); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
452 |
return false; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
453 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
454 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
455 |
if(empty($cmd)) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
456 |
{ |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
457 |
$this->ERROR = "POP3 send_cmd: " . _("Empty command string"); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
458 |
return ""; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
459 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
460 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
461 |
$fp = $this->FP; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
462 |
$buffer = $this->BUFFER; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
463 |
$this->update_timer(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
464 |
fwrite($fp,"$cmd\r\n"); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
465 |
$reply = fgets($fp,$buffer); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
466 |
$reply = $this->strip_clf($reply); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
467 |
if($this->DEBUG) { @error_log("POP3 SEND [$cmd] GOT [$reply]",0); } |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
468 |
return $reply; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
469 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
470 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
471 |
function quit() { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
472 |
// Closes the connection to the POP3 server, deleting |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
473 |
// any msgs marked as deleted. |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
474 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
475 |
if(!isset($this->FP)) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
476 |
{ |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
477 |
$this->ERROR = "POP3 quit: " . _("connection does not exist"); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
478 |
return false; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
479 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
480 |
$fp = $this->FP; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
481 |
$cmd = "QUIT"; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
482 |
fwrite($fp,"$cmd\r\n"); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
483 |
$reply = fgets($fp,$this->BUFFER); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
484 |
$reply = $this->strip_clf($reply); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
485 |
if($this->DEBUG) { @error_log("POP3 SEND [$cmd] GOT [$reply]",0); } |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
486 |
fclose($fp); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
487 |
unset($this->FP); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
488 |
return true; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
489 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
490 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
491 |
function popstat () { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
492 |
// Returns an array of 2 elements. The number of undeleted |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
493 |
// msgs in the mailbox, and the size of the mbox in octets. |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
494 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
495 |
$PopArray = $this->last("array"); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
496 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
497 |
if($PopArray == -1) { return false; } |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
498 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
499 |
if( (!$PopArray) or (empty($PopArray)) ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
500 |
{ |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
501 |
return false; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
502 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
503 |
return $PopArray; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
504 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
505 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
506 |
function uidl ($msgNum = "") |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
507 |
{ |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
508 |
// Returns the UIDL of the msg specified. If called with |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
509 |
// no arguments, returns an associative array where each |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
510 |
// undeleted msg num is a key, and the msg's uidl is the element |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
511 |
// Array element 0 will contain the total number of msgs |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
512 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
513 |
if(!isset($this->FP)) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
514 |
$this->ERROR = "POP3 uidl: " . _("No connection to server"); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
515 |
return false; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
516 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
517 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
518 |
$fp = $this->FP; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
519 |
$buffer = $this->BUFFER; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
520 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
521 |
if(!empty($msgNum)) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
522 |
$cmd = "UIDL $msgNum"; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
523 |
$reply = $this->send_cmd($cmd); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
524 |
if(!$this->is_ok($reply)) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
525 |
{ |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
526 |
$this->ERROR = "POP3 uidl: " . _("Error ") . "[$reply]"; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
527 |
return false; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
528 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
529 |
list ($ok,$num,$myUidl) = preg_split('/\s+/',$reply); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
530 |
return $myUidl; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
531 |
} else { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
532 |
$this->update_timer(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
533 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
534 |
$UIDLArray = array(); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
535 |
$Total = $this->COUNT; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
536 |
$UIDLArray[0] = $Total; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
537 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
538 |
if ($Total < 1) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
539 |
{ |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
540 |
return $UIDLArray; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
541 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
542 |
$cmd = "UIDL"; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
543 |
fwrite($fp, "UIDL\r\n"); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
544 |
$reply = fgets($fp, $buffer); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
545 |
$reply = $this->strip_clf($reply); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
546 |
if($this->DEBUG) { @error_log("POP3 SEND [$cmd] GOT [$reply]",0); } |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
547 |
if(!$this->is_ok($reply)) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
548 |
{ |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
549 |
$this->ERROR = "POP3 uidl: " . _("Error ") . "[$reply]"; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
550 |
return false; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
551 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
552 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
553 |
$line = ""; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
554 |
$count = 1; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
555 |
$line = fgets($fp,$buffer); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
556 |
while ( !ereg("^\.\r\n",$line)) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
557 |
if(ereg("^\.\r\n",$line)) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
558 |
break; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
559 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
560 |
list ($msg,$msgUidl) = preg_split('/\s+/',$line); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
561 |
$msgUidl = $this->strip_clf($msgUidl); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
562 |
if($count == $msg) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
563 |
$UIDLArray[$msg] = $msgUidl; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
564 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
565 |
else |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
566 |
{ |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
567 |
$UIDLArray[$count] = 'deleted'; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
568 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
569 |
$count++; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
570 |
$line = fgets($fp,$buffer); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
571 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
572 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
573 |
return $UIDLArray; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
574 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
575 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
576 |
function delete ($msgNum = "") { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
577 |
// Flags a specified msg as deleted. The msg will not |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
578 |
// be deleted until a quit() method is called. |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
579 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
580 |
if(!isset($this->FP)) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
581 |
{ |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
582 |
$this->ERROR = "POP3 delete: " . _("No connection to server"); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
583 |
return false; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
584 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
585 |
if(empty($msgNum)) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
586 |
{ |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
587 |
$this->ERROR = "POP3 delete: " . _("No msg number submitted"); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
588 |
return false; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
589 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
590 |
$reply = $this->send_cmd("DELE $msgNum"); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
591 |
if(!$this->is_ok($reply)) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
592 |
{ |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
593 |
$this->ERROR = "POP3 delete: " . _("Command failed ") . "[$reply]"; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
594 |
return false; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
595 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
596 |
return true; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
597 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
598 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
599 |
// ********************************************************* |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
600 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
601 |
// The following methods are internal to the class. |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
602 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
603 |
function is_ok ($cmd = "") { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
604 |
// Return true or false on +OK or -ERR |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
605 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
606 |
if( empty($cmd) ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
607 |
return false; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
608 |
else |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
609 |
return( ereg ("^\+OK", $cmd ) ); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
610 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
611 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
612 |
function strip_clf ($text = "") { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
613 |
// Strips \r\n from server responses |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
614 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
615 |
if(empty($text)) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
616 |
return $text; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
617 |
else { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
618 |
$stripped = str_replace("\r",'',$text); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
619 |
$stripped = str_replace("\n",'',$stripped); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
620 |
return $stripped; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
621 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
622 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
623 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
624 |
function parse_banner ( $server_text ) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
625 |
$outside = true; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
626 |
$banner = ""; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
627 |
$length = strlen($server_text); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
628 |
for($count =0; $count < $length; $count++) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
629 |
{ |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
630 |
$digit = substr($server_text,$count,1); |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
631 |
if(!empty($digit)) { |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
632 |
if( (!$outside) && ($digit != '<') && ($digit != '>') ) |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
633 |
{ |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
634 |
$banner .= $digit; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
635 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
636 |
if ($digit == '<') |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
637 |
{ |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
638 |
$outside = false; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
639 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
640 |
if($digit == '>') |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
641 |
{ |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
642 |
$outside = true; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
643 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
644 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
645 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
646 |
$banner = $this->strip_clf($banner); // Just in case |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
647 |
return "<$banner>"; |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
648 |
} |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
649 |
|
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
650 |
} // End class |
hurons@caf4f556-3d62-0410-8435-a86758001935
parents:
diff
changeset
|
651 |
?> |