run:R W Run
DIR
2026-03-11 16:18:51
R W Run
DIR
2026-03-11 16:18:52
R W Run
DIR
2026-03-11 16:18:51
R W Run
DIR
2026-03-11 16:18:52
R W Run
DIR
2026-03-11 16:18:52
R W Run
DIR
2026-03-11 16:18:51
R W Run
DIR
2026-03-11 16:18:51
R W Run
DIR
2026-03-11 16:18:51
R W Run
DIR
2026-03-11 16:18:51
R W Run
DIR
2026-03-11 16:18:52
R W Run
DIR
2026-03-11 16:18:52
R W Run
DIR
2026-03-11 16:18:52
R W Run
DIR
2026-03-11 16:18:51
R W Run
DIR
2026-03-11 16:18:52
R W Run
DIR
2026-03-11 16:18:52
R W Run
DIR
2026-03-11 16:18:51
R W Run
DIR
2026-03-11 16:18:52
R W Run
DIR
2026-03-11 16:18:51
R W Run
DIR
2026-03-11 16:18:51
R W Run
DIR
2026-03-11 16:18:51
R W Run
DIR
2026-03-11 16:18:52
R W Run
DIR
2026-03-11 16:18:52
R W Run
DIR
2026-03-11 16:18:52
R W Run
DIR
2026-03-11 16:18:52
R W Run
DIR
2026-03-11 16:18:51
R W Run
DIR
2026-03-11 16:18:52
R W Run
DIR
2026-03-11 16:18:52
R W Run
DIR
2026-03-11 16:18:51
R W Run
DIR
2026-03-11 16:18:51
R W Run
23.8 KB
2026-03-11 16:18:51
R W Run
7.8 KB
2026-03-11 16:18:52
R W Run
36.1 KB
2026-03-11 16:18:51
R W Run
11.9 KB
2026-03-11 16:18:52
R W Run
18.94 KB
2026-03-11 16:18:52
R W Run
7.35 KB
2026-03-11 16:18:52
R W Run
28.6 KB
2026-03-11 16:18:51
R W Run
316 By
2026-03-11 16:18:51
R W Run
12.9 KB
2026-03-11 16:18:51
R W Run
61.02 KB
2026-03-11 16:18:52
R W Run
15 KB
2026-03-11 16:18:51
R W Run
112.05 KB
2026-03-11 16:18:51
R W Run
12.47 KB
2026-03-11 16:18:51
R W Run
15.07 KB
2026-03-11 16:18:52
R W Run
9.84 KB
2026-03-11 16:18:52
R W Run
13.17 KB
2026-03-11 16:18:52
R W Run
33.83 KB
2026-03-11 16:18:51
R W Run
42.63 KB
2026-03-11 16:18:51
R W Run
55.71 KB
2026-03-11 16:18:52
R W Run
12.53 KB
2026-03-11 16:18:51
R W Run
2.55 KB
2026-03-11 16:18:52
R W Run
28.92 KB
2026-03-11 16:18:52
R W Run
539 By
2026-03-11 16:18:51
R W Run
367 By
2026-03-11 16:18:52
R W Run
42.65 KB
2026-03-11 16:18:51
R W Run
401 By
2026-03-11 16:18:51
R W Run
6.61 KB
2026-03-11 16:18:51
R W Run
664 By
2026-03-11 16:18:52
R W Run
20.63 KB
2026-03-11 16:18:51
R W Run
2.18 KB
2026-03-11 16:18:52
R W Run
453 By
2026-03-11 16:18:52
R W Run
457 By
2026-03-11 16:18:51
R W Run
36.83 KB
2026-03-11 16:18:52
R W Run
2.41 KB
2026-03-11 16:18:52
R W Run
8.28 KB
2026-03-11 16:18:51
R W Run
13.89 KB
2026-03-11 16:18:51
R W Run
11.76 KB
2026-03-11 16:18:51
R W Run
2.65 KB
2026-03-11 16:18:51
R W Run
7.43 KB
2026-03-11 16:18:51
R W Run
17.46 KB
2026-03-11 16:18:51
R W Run
5.14 KB
2026-03-11 16:18:52
R W Run
16.7 KB
2026-03-11 16:18:51
R W Run
8.28 KB
2026-03-11 16:18:52
R W Run
2.92 KB
2026-03-11 16:18:52
R W Run
1.32 KB
2026-03-11 16:18:51
R W Run
4.6 KB
2026-03-11 16:18:52
R W Run
11.62 KB
2026-03-11 16:18:52
R W Run
2.5 KB
2026-03-11 16:18:51
R W Run
1.97 KB
2026-03-11 16:18:51
R W Run
11.25 KB
2026-03-11 16:18:52
R W Run
5.32 KB
2026-03-11 16:18:51
R W Run
10.99 KB
2026-03-11 16:18:52
R W Run
68.32 KB
2026-03-11 16:18:51
R W Run
6.34 KB
2026-03-11 16:18:51
R W Run
5.49 KB
2026-03-11 16:18:51
R W Run
1.99 KB
2026-03-11 16:18:52
R W Run
7.02 KB
2026-03-11 16:18:51
R W Run
4.91 KB
2026-03-11 16:18:52
R W Run
16.86 KB
2026-03-11 16:18:51
R W Run
24.23 KB
2026-03-11 16:18:51
R W Run
3.97 KB
2026-03-11 16:18:51
R W Run
47.66 KB
2026-03-11 16:18:51
R W Run
9.22 KB
2026-03-11 16:18:51
R W Run
25.51 KB
2026-03-11 16:18:51
R W Run
198.38 KB
2026-03-11 16:18:52
R W Run
56.65 KB
2026-03-11 16:18:51
R W Run
10.46 KB
2026-03-11 16:18:51
R W Run
10.95 KB
2026-03-11 16:18:52
R W Run
29.26 KB
2026-03-11 16:18:51
R W Run
70.91 KB
2026-03-11 16:18:52
R W Run
35.3 KB
2026-03-11 16:18:52
R W Run
16.61 KB
2026-03-11 16:18:52
R W Run
2.57 KB
2026-03-11 16:18:52
R W Run
39.83 KB
2026-03-11 16:18:51
R W Run
70.64 KB
2026-03-11 16:18:51
R W Run
15.56 KB
2026-03-11 16:18:52
R W Run
7.33 KB
2026-03-11 16:18:52
R W Run
253 By
2026-03-11 16:18:51
R W Run
7.96 KB
2026-03-11 16:18:52
R W Run
3.23 KB
2026-03-11 16:18:52
R W Run
969 By
2026-03-11 16:18:52
R W Run
16.28 KB
2026-03-11 16:18:51
R W Run
7.22 KB
2026-03-11 16:18:51
R W Run
12.95 KB
2026-03-11 16:18:51
R W Run
6.53 KB
2026-03-11 16:18:51
R W Run
3.42 KB
2026-03-11 16:18:52
R W Run
5.84 KB
2026-03-11 16:18:51
R W Run
1.97 KB
2026-03-11 16:18:51
R W Run
4.3 KB
2026-03-11 16:18:52
R W Run
2.91 KB
2026-03-11 16:18:51
R W Run
16.46 KB
2026-03-11 16:18:52
R W Run
40.6 KB
2026-03-11 16:18:51
R W Run
20.22 KB
2026-03-11 16:18:51
R W Run
36.11 KB
2026-03-11 16:18:52
R W Run
17.01 KB
2026-03-11 16:18:51
R W Run
7.27 KB
2026-03-11 16:18:52
R W Run
6.62 KB
2026-03-11 16:18:52
R W Run
16.49 KB
2026-03-11 16:18:52
R W Run
1.79 KB
2026-03-11 16:18:52
R W Run
29.82 KB
2026-03-11 16:18:51
R W Run
6.67 KB
2026-03-11 16:18:52
R W Run
8.98 KB
2026-03-11 16:18:52
R W Run
19.42 KB
2026-03-11 16:18:51
R W Run
12.01 KB
2026-03-11 16:18:51
R W Run
17.11 KB
2026-03-11 16:18:51
R W Run
6.74 KB
2026-03-11 16:18:52
R W Run
30.93 KB
2026-03-11 16:18:51
R W Run
4.99 KB
2026-03-11 16:18:51
R W Run
4.25 KB
2026-03-11 16:18:51
R W Run
24.72 KB
2026-03-11 16:18:51
R W Run
29.96 KB
2026-03-11 16:18:52
R W Run
6.41 KB
2026-03-11 16:18:51
R W Run
160 KB
2026-03-11 16:18:51
R W Run
6.72 KB
2026-03-11 16:18:52
R W Run
10.92 KB
2026-03-11 16:18:51
R W Run
4.77 KB
2026-03-11 16:18:51
R W Run
3.38 KB
2026-03-11 16:18:51
R W Run
11.18 KB
2026-03-11 16:18:51
R W Run
62.19 KB
2026-03-11 16:18:51
R W Run
2.46 KB
2026-03-11 16:18:51
R W Run
9.17 KB
2026-03-11 16:18:51
R W Run
32.15 KB
2026-03-11 16:18:51
R W Run
34.05 KB
2026-03-11 16:18:52
R W Run
7.15 KB
2026-03-11 16:18:51
R W Run
3.47 KB
2026-03-11 16:18:52
R W Run
1.87 KB
2026-03-11 16:18:52
R W Run
30.91 KB
2026-03-11 16:18:51
R W Run
7.29 KB
2026-03-11 16:18:52
R W Run
7.35 KB
2026-03-11 16:18:51
R W Run
12.54 KB
2026-03-11 16:18:51
R W Run
19.12 KB
2026-03-11 16:18:51
R W Run
18.12 KB
2026-03-11 16:18:52
R W Run
39.99 KB
2026-03-11 16:18:52
R W Run
5.17 KB
2026-03-11 16:18:52
R W Run
979 By
2026-03-11 16:18:51
R W Run
18.44 KB
2026-03-11 16:18:52
R W Run
10.24 KB
2026-03-11 16:18:51
R W Run
1.77 KB
2026-03-11 16:18:52
R W Run
34.9 KB
2026-03-11 16:18:51
R W Run
7.19 KB
2026-03-11 16:18:52
R W Run
160.5 KB
2026-03-11 16:18:51
R W Run
64.27 KB
2026-03-11 16:18:51
R W Run
27.95 KB
2026-03-11 16:18:51
R W Run
4.69 KB
2026-03-11 16:18:51
R W Run
2.94 KB
2026-03-11 16:18:51
R W Run
43.13 KB
2026-03-11 16:18:52
R W Run
2.25 KB
2026-03-11 16:18:52
R W Run
22.5 KB
2026-03-11 16:18:51
R W Run
13.01 KB
2026-03-11 16:18:52
R W Run
3.27 KB
2026-03-11 16:18:51
R W Run
18 KB
2026-03-11 16:18:51
R W Run
210.4 KB
2026-03-11 16:18:52
R W Run
25.86 KB
2026-03-11 16:18:52
R W Run
115.85 KB
2026-03-11 16:18:51
R W Run
373 By
2026-03-11 16:18:52
R W Run
343 By
2026-03-11 16:18:52
R W Run
338 By
2026-03-11 16:18:51
R W Run
100.73 KB
2026-03-11 16:18:52
R W Run
130.93 KB
2026-03-11 16:18:51
R W Run
19.1 KB
2026-03-11 16:18:51
R W Run
17.41 KB
2026-03-11 16:18:52
R W Run
41.98 KB
2026-03-11 16:18:52
R W Run
400 By
2026-03-11 16:18:52
R W Run
11.1 KB
2026-03-11 16:18:52
R W Run
37.02 KB
2026-03-11 16:18:51
R W Run
2.24 KB
2026-03-11 16:18:51
R W Run
188.13 KB
2026-03-11 16:18:51
R W Run
338 By
2026-03-11 16:18:51
R W Run
38 KB
2026-03-11 16:18:51
R W Run
4.02 KB
2026-03-11 16:18:52
R W Run
5.38 KB
2026-03-11 16:18:51
R W Run
3.05 KB
2026-03-11 16:18:52
R W Run
2.61 KB
2026-03-11 16:18:51
R W Run
1.16 KB
2026-03-11 16:18:52
R W Run
4.04 KB
2026-03-11 16:18:51
R W Run
3.71 KB
2026-03-11 16:18:51
R W Run
24.6 KB
2026-03-11 16:18:51
R W Run
9.56 KB
2026-03-11 16:18:51
R W Run
346.43 KB
2026-03-11 16:18:52
R W Run
281.84 KB
2026-03-11 16:18:52
R W Run
14.95 KB
2026-03-11 16:18:51
R W Run
8.44 KB
2026-03-11 16:18:52
R W Run
168.95 KB
2026-03-11 16:18:52
R W Run
20.71 KB
2026-03-11 16:18:52
R W Run
25.27 KB
2026-03-11 16:18:51
R W Run
5.72 KB
2026-03-11 16:18:51
R W Run
4.63 KB
2026-03-11 16:18:52
R W Run
81.73 KB
2026-03-11 16:18:51
R W Run
67.18 KB
2026-03-11 16:18:51
R W Run
156.36 KB
2026-03-11 16:18:52
R W Run
55.19 KB
2026-03-11 16:18:51
R W Run
162 By
2026-03-11 16:18:51
R W Run
61.72 KB
2026-03-11 16:18:51
R W Run
216.06 KB
2026-03-11 16:18:52
R W Run
65.09 KB
2026-03-11 16:18:51
R W Run
25.24 KB
2026-03-11 16:18:52
R W Run
4.81 KB
2026-03-11 16:18:51
R W Run
6.48 KB
2026-03-11 16:18:52
R W Run
21.25 KB
2026-03-11 16:18:51
R W Run
2.79 KB
2026-03-11 16:18:52
R W Run
89.69 KB
2026-03-11 16:18:52
R W Run
19.42 KB
2026-03-11 16:18:52
R W Run
3.69 KB
2026-03-11 16:18:52
R W Run
4.11 KB
2026-03-11 16:18:51
R W Run
40.74 KB
2026-03-11 16:18:51
R W Run
25.38 KB
2026-03-11 16:18:51
R W Run
43.31 KB
2026-03-11 16:18:52
R W Run
102.57 KB
2026-03-11 16:18:52
R W Run
6.18 KB
2026-03-11 16:18:51
R W Run
124.47 KB
2026-03-11 16:18:52
R W Run
35.65 KB
2026-03-11 16:18:52
R W Run
6.94 KB
2026-03-11 16:18:52
R W Run
67.04 KB
2026-03-11 16:18:52
R W Run
10.62 KB
2026-03-11 16:18:51
R W Run
289.35 KB
2026-03-11 16:18:52
R W Run
36.23 KB
2026-03-11 16:18:51
R W Run
200 By
2026-03-11 16:18:52
R W Run
200 By
2026-03-11 16:18:52
R W Run
98.29 KB
2026-03-11 16:18:52
R W Run
30.02 KB
2026-03-11 16:18:52
R W Run
19.03 KB
2026-03-11 16:18:52
R W Run
5.06 KB
2026-03-11 16:18:52
R W Run
255 By
2026-03-11 16:18:51
R W Run
22.66 KB
2026-03-11 16:18:52
R W Run
154.63 KB
2026-03-11 16:18:51
R W Run
9.68 KB
2026-03-11 16:18:51
R W Run
258 By
2026-03-11 16:18:51
R W Run
23.49 KB
2026-03-11 16:18:51
R W Run
3.16 KB
2026-03-11 16:18:51
R W Run
8.4 KB
2026-03-11 16:18:52
R W Run
441 By
2026-03-11 16:18:51
R W Run
7.39 KB
2026-03-11 16:18:51
R W Run
173 KB
2026-03-11 16:18:52
R W Run
544 By
2026-03-11 16:18:52
R W Run
4.17 KB
2026-03-11 16:18:51
R W Run
35.97 KB
2026-03-11 16:18:52
R W Run
1.69 KB
2026-03-11 16:18:51
R W Run
2.84 KB
2026-03-11 16:18:52
R W Run
6.09 KB
2026-03-11 16:18:51
R W Run
8.71 KB
2026-03-11 16:18:51
R W Run
131.84 KB
2026-03-11 16:18:51
R W Run
37.45 KB
2026-03-11 16:18:51
R W Run
173.89 KB
2026-03-11 16:18:51
R W Run
7.09 KB
2026-03-11 16:18:51
R W Run
6.41 KB
2026-03-11 16:18:51
R W Run
1.08 KB
2026-03-11 16:18:51
R W Run
69.46 KB
2026-03-11 16:18:52
R W Run
445 By
2026-03-11 16:18:51
R W Run
799 By
2026-03-11 16:18:52
R W Run
error_log
📄class-pop3.php
1<?php
2/**
3 * mail_fetch/setup.php
4 *
5 * Copyright (c) 1999-2011 CDI (cdi@thewebmasters.net) All Rights Reserved
6 * Modified by Philippe Mingo 2001-2009 mingo@rotedic.com
7 * An RFC 1939 compliant wrapper class for the POP3 protocol.
8 *
9 * Licensed under the GNU GPL. For full terms see the file COPYING.
10 *
11 * POP3 class
12 *
13 * @copyright 1999-2011 The SquirrelMail Project Team
14 * @license https://opensource.org/licenses/gpl-license.php GNU Public License
15 * @package plugins
16 * @subpackage mail_fetch
17 */
18
19class POP3 {
20 var $ERROR = ''; // Error string.
21
22 var $TIMEOUT = 60; // Default timeout before giving up on a
23 // network operation.
24
25 var $COUNT = -1; // Mailbox msg count
26
27 var $BUFFER = 512; // Socket buffer for socket fgets() calls.
28 // Per RFC 1939 the returned line a POP3
29 // server can send is 512 bytes.
30
31 var $FP = ''; // The connection to the server's
32 // file descriptor
33
34 var $MAILSERVER = ''; // Set this to hard code the server name
35
36 var $DEBUG = FALSE; // set to true to echo pop3
37 // commands and responses to error_log
38 // this WILL log passwords!
39
40 var $BANNER = ''; // Holds the banner returned by the
41 // pop server - used for apop()
42
43 var $ALLOWAPOP = FALSE; // Allow or disallow apop()
44 // This must be set to true
45 // manually
46
47 /**
48 * PHP5 constructor.
49 */
50 function __construct ( $server = '', $timeout = '' ) {
51 settype($this->BUFFER,"integer");
52 if( !empty($server) ) {
53 // Do not allow programs to alter MAILSERVER
54 // if it is already specified. They can get around
55 // this if they -really- want to, so don't count on it.
56 if(empty($this->MAILSERVER))
57 $this->MAILSERVER = $server;
58 }
59 if(!empty($timeout)) {
60 settype($timeout,"integer");
61 $this->TIMEOUT = $timeout;
62 // Extend POP3 request timeout to the specified TIMEOUT property.
63 if(function_exists("set_time_limit")){
64 set_time_limit($timeout);
65 }
66 }
67 return true;
68 }
69
70 /**
71 * PHP4 constructor.
72 */
73 public function POP3( $server = '', $timeout = '' ) {
74 self::__construct( $server, $timeout );
75 }
76
77 function update_timer () {
78 // Extend POP3 request timeout to the specified TIMEOUT property.
79 if(function_exists("set_time_limit")){
80 set_time_limit($this->TIMEOUT);
81 }
82 return true;
83 }
84
85 function connect ($server, $port = 110) {
86 // Opens a socket to the specified server. Unless overridden,
87 // port defaults to 110. Returns true on success, false on fail
88
89 // If MAILSERVER is set, override $server with its value.
90
91 if (!isset($port) || !$port) {$port = 110;}
92 if(!empty($this->MAILSERVER))
93 $server = $this->MAILSERVER;
94
95 if(empty($server)){
96 $this->ERROR = "POP3 connect: " . _("No server specified");
97 unset($this->FP);
98 return false;
99 }
100
101 $fp = @fsockopen("$server", $port, $errno, $errstr);
102
103 if(!$fp) {
104 $this->ERROR = "POP3 connect: " . _("Error ") . "[$errno] [$errstr]";
105 unset($this->FP);
106 return false;
107 }
108
109 socket_set_blocking($fp,-1);
110 $this->update_timer();
111 $reply = fgets($fp,$this->BUFFER);
112 $reply = $this->strip_clf($reply);
113 if($this->DEBUG)
114 error_log("POP3 SEND [connect: $server] GOT [$reply]",0);
115 if(!$this->is_ok($reply)) {
116 $this->ERROR = "POP3 connect: " . _("Error ") . "[$reply]";
117 unset($this->FP);
118 return false;
119 }
120 $this->FP = $fp;
121 $this->BANNER = $this->parse_banner($reply);
122 return true;
123 }
124
125 function user ($user = "") {
126 // Sends the USER command, returns true or false
127
128 if( empty($user) ) {
129 $this->ERROR = "POP3 user: " . _("no login ID submitted");
130 return false;
131 } elseif(!isset($this->FP)) {
132 $this->ERROR = "POP3 user: " . _("connection not established");
133 return false;
134 } else {
135 $reply = $this->send_cmd("USER $user");
136 if(!$this->is_ok($reply)) {
137 $this->ERROR = "POP3 user: " . _("Error ") . "[$reply]";
138 return false;
139 } else
140 return true;
141 }
142 }
143
144 function pass ($pass = "") {
145 // Sends the PASS command, returns # of msgs in mailbox,
146 // returns false (undef) on Auth failure
147
148 if(empty($pass)) {
149 $this->ERROR = "POP3 pass: " . _("No password submitted");
150 return false;
151 } elseif(!isset($this->FP)) {
152 $this->ERROR = "POP3 pass: " . _("connection not established");
153 return false;
154 } else {
155 $reply = $this->send_cmd("PASS $pass");
156 if(!$this->is_ok($reply)) {
157 $this->ERROR = "POP3 pass: " . _("Authentication failed") . " [$reply]";
158 $this->quit();
159 return false;
160 } else {
161 // Auth successful.
162 $count = $this->last("count");
163 $this->COUNT = $count;
164 return $count;
165 }
166 }
167 }
168
169 function apop ($login,$pass) {
170 // Attempts an APOP login. If this fails, it'll
171 // try a standard login. YOUR SERVER MUST SUPPORT
172 // THE USE OF THE APOP COMMAND!
173 // (apop is optional per rfc1939)
174
175 if(!isset($this->FP)) {
176 $this->ERROR = "POP3 apop: " . _("No connection to server");
177 return false;
178 } elseif(!$this->ALLOWAPOP) {
179 $retVal = $this->login($login,$pass);
180 return $retVal;
181 } elseif(empty($login)) {
182 $this->ERROR = "POP3 apop: " . _("No login ID submitted");
183 return false;
184 } elseif(empty($pass)) {
185 $this->ERROR = "POP3 apop: " . _("No password submitted");
186 return false;
187 } else {
188 $banner = $this->BANNER;
189 if( (!$banner) or (empty($banner)) ) {
190 $this->ERROR = "POP3 apop: " . _("No server banner") . ' - ' . _("abort");
191 $retVal = $this->login($login,$pass);
192 return $retVal;
193 } else {
194 $AuthString = $banner;
195 $AuthString .= $pass;
196 $APOPString = md5($AuthString);
197 $cmd = "APOP $login $APOPString";
198 $reply = $this->send_cmd($cmd);
199 if(!$this->is_ok($reply)) {
200 $this->ERROR = "POP3 apop: " . _("apop authentication failed") . ' - ' . _("abort");
201 $retVal = $this->login($login,$pass);
202 return $retVal;
203 } else {
204 // Auth successful.
205 $count = $this->last("count");
206 $this->COUNT = $count;
207 return $count;
208 }
209 }
210 }
211 }
212
213 function login ($login = "", $pass = "") {
214 // Sends both user and pass. Returns # of msgs in mailbox or
215 // false on failure (or -1, if the error occurs while getting
216 // the number of messages.)
217
218 if( !isset($this->FP) ) {
219 $this->ERROR = "POP3 login: " . _("No connection to server");
220 return false;
221 } else {
222 $fp = $this->FP;
223 if( !$this->user( $login ) ) {
224 // Preserve the error generated by user()
225 return false;
226 } else {
227 $count = $this->pass($pass);
228 if( (!$count) || ($count == -1) ) {
229 // Preserve the error generated by last() and pass()
230 return false;
231 } else
232 return $count;
233 }
234 }
235 }
236
237 function top ($msgNum, $numLines = "0") {
238 // Gets the header and first $numLines of the msg body
239 // returns data in an array with each returned line being
240 // an array element. If $numLines is empty, returns
241 // only the header information, and none of the body.
242
243 if(!isset($this->FP)) {
244 $this->ERROR = "POP3 top: " . _("No connection to server");
245 return false;
246 }
247 $this->update_timer();
248
249 $fp = $this->FP;
250 $buffer = $this->BUFFER;
251 $cmd = "TOP $msgNum $numLines";
252 fwrite($fp, "TOP $msgNum $numLines\r\n");
253 $reply = fgets($fp, $buffer);
254 $reply = $this->strip_clf($reply);
255 if($this->DEBUG) {
256 @error_log("POP3 SEND [$cmd] GOT [$reply]",0);
257 }
258 if(!$this->is_ok($reply))
259 {
260 $this->ERROR = "POP3 top: " . _("Error ") . "[$reply]";
261 return false;
262 }
263
264 $count = 0;
265 $MsgArray = array();
266
267 $line = fgets($fp,$buffer);
268 while ( !preg_match('/^\.\r\n/',$line))
269 {
270 $MsgArray[$count] = $line;
271 $count++;
272 $line = fgets($fp,$buffer);
273 if(empty($line)) { break; }
274 }
275
276 return $MsgArray;
277 }
278
279 function pop_list ($msgNum = "") {
280 // If called with an argument, returns that msgs' size in octets
281 // No argument returns an associative array of undeleted
282 // msg numbers and their sizes in octets
283
284 if(!isset($this->FP))
285 {
286 $this->ERROR = "POP3 pop_list: " . _("No connection to server");
287 return false;
288 }
289 $fp = $this->FP;
290 $Total = $this->COUNT;
291 if( (!$Total) or ($Total == -1) )
292 {
293 return false;
294 }
295 if($Total == 0)
296 {
297 return array("0","0");
298 // return -1; // mailbox empty
299 }
300
301 $this->update_timer();
302
303 if(!empty($msgNum))
304 {
305 $cmd = "LIST $msgNum";
306 fwrite($fp,"$cmd\r\n");
307 $reply = fgets($fp,$this->BUFFER);
308 $reply = $this->strip_clf($reply);
309 if($this->DEBUG) {
310 @error_log("POP3 SEND [$cmd] GOT [$reply]",0);
311 }
312 if(!$this->is_ok($reply))
313 {
314 $this->ERROR = "POP3 pop_list: " . _("Error ") . "[$reply]";
315 return false;
316 }
317 list($junk,$num,$size) = preg_split('/\s+/',$reply);
318 return $size;
319 }
320 $cmd = "LIST";
321 $reply = $this->send_cmd($cmd);
322 if(!$this->is_ok($reply))
323 {
324 $reply = $this->strip_clf($reply);
325 $this->ERROR = "POP3 pop_list: " . _("Error ") . "[$reply]";
326 return false;
327 }
328 $MsgArray = array();
329 $MsgArray[0] = $Total;
330 for($msgC=1;$msgC <= $Total; $msgC++)
331 {
332 if($msgC > $Total) { break; }
333 $line = fgets($fp,$this->BUFFER);
334 $line = $this->strip_clf($line);
335 if(strpos($line, '.') === 0)
336 {
337 $this->ERROR = "POP3 pop_list: " . _("Premature end of list");
338 return false;
339 }
340 list($thisMsg,$msgSize) = preg_split('/\s+/',$line);
341 settype($thisMsg,"integer");
342 if($thisMsg != $msgC)
343 {
344 $MsgArray[$msgC] = "deleted";
345 }
346 else
347 {
348 $MsgArray[$msgC] = $msgSize;
349 }
350 }
351 return $MsgArray;
352 }
353
354 function get ($msgNum) {
355 // Retrieve the specified msg number. Returns an array
356 // where each line of the msg is an array element.
357
358 if(!isset($this->FP))
359 {
360 $this->ERROR = "POP3 get: " . _("No connection to server");
361 return false;
362 }
363
364 $this->update_timer();
365
366 $fp = $this->FP;
367 $buffer = $this->BUFFER;
368 $cmd = "RETR $msgNum";
369 $reply = $this->send_cmd($cmd);
370
371 if(!$this->is_ok($reply))
372 {
373 $this->ERROR = "POP3 get: " . _("Error ") . "[$reply]";
374 return false;
375 }
376
377 $count = 0;
378 $MsgArray = array();
379
380 $line = fgets($fp,$buffer);
381 while ( !preg_match('/^\.\r\n/',$line))
382 {
383 if ( $line[0] == '.' ) { $line = substr($line,1); }
384 $MsgArray[$count] = $line;
385 $count++;
386 $line = fgets($fp,$buffer);
387 if(empty($line)) { break; }
388 }
389 return $MsgArray;
390 }
391
392 function last ( $type = "count" ) {
393 // Returns the highest msg number in the mailbox.
394 // returns -1 on error, 0+ on success, if type != count
395 // results in a popstat() call (2 element array returned)
396
397 $last = -1;
398 if(!isset($this->FP))
399 {
400 $this->ERROR = "POP3 last: " . _("No connection to server");
401 return $last;
402 }
403
404 $reply = $this->send_cmd("STAT");
405 if(!$this->is_ok($reply))
406 {
407 $this->ERROR = "POP3 last: " . _("Error ") . "[$reply]";
408 return $last;
409 }
410
411 $Vars = preg_split('/\s+/',$reply);
412 $count = $Vars[1];
413 $size = $Vars[2];
414 settype($count,"integer");
415 settype($size,"integer");
416 if($type != "count")
417 {
418 return array($count,$size);
419 }
420 return $count;
421 }
422
423 function reset () {
424 // Resets the status of the remote server. This includes
425 // resetting the status of ALL msgs to not be deleted.
426 // This method automatically closes the connection to the server.
427
428 if(!isset($this->FP))
429 {
430 $this->ERROR = "POP3 reset: " . _("No connection to server");
431 return false;
432 }
433 $reply = $this->send_cmd("RSET");
434 if(!$this->is_ok($reply))
435 {
436 // The POP3 RSET command -never- gives a -ERR
437 // response - if it ever does, something truly
438 // wild is going on.
439
440 $this->ERROR = "POP3 reset: " . _("Error ") . "[$reply]";
441 @error_log("POP3 reset: ERROR [$reply]",0);
442 }
443 $this->quit();
444 return true;
445 }
446
447 function send_cmd ( $cmd = "" )
448 {
449 // Sends a user defined command string to the
450 // POP server and returns the results. Useful for
451 // non-compliant or custom POP servers.
452 // Do NOT include the \r\n as part of your command
453 // string - it will be appended automatically.
454
455 // The return value is a standard fgets() call, which
456 // will read up to $this->BUFFER bytes of data, until it
457 // encounters a new line, or EOF, whichever happens first.
458
459 // This method works best if $cmd responds with only
460 // one line of data.
461
462 if(!isset($this->FP))
463 {
464 $this->ERROR = "POP3 send_cmd: " . _("No connection to server");
465 return false;
466 }
467
468 if(empty($cmd))
469 {
470 $this->ERROR = "POP3 send_cmd: " . _("Empty command string");
471 return "";
472 }
473
474 $fp = $this->FP;
475 $buffer = $this->BUFFER;
476 $this->update_timer();
477 fwrite($fp,"$cmd\r\n");
478 $reply = fgets($fp,$buffer);
479 $reply = $this->strip_clf($reply);
480 if($this->DEBUG) { @error_log("POP3 SEND [$cmd] GOT [$reply]",0); }
481 return $reply;
482 }
483
484 function quit() {
485 // Closes the connection to the POP3 server, deleting
486 // any msgs marked as deleted.
487
488 if(!isset($this->FP))
489 {
490 $this->ERROR = "POP3 quit: " . _("connection does not exist");
491 return false;
492 }
493 $fp = $this->FP;
494 $cmd = "QUIT";
495 fwrite($fp,"$cmd\r\n");
496 $reply = fgets($fp,$this->BUFFER);
497 $reply = $this->strip_clf($reply);
498 if($this->DEBUG) { @error_log("POP3 SEND [$cmd] GOT [$reply]",0); }
499 fclose($fp);
500 unset($this->FP);
501 return true;
502 }
503
504 function popstat () {
505 // Returns an array of 2 elements. The number of undeleted
506 // msgs in the mailbox, and the size of the mbox in octets.
507
508 $PopArray = $this->last("array");
509
510 if($PopArray == -1) { return false; }
511
512 if( (!$PopArray) or (empty($PopArray)) )
513 {
514 return false;
515 }
516 return $PopArray;
517 }
518
519 function uidl ($msgNum = "")
520 {
521 // Returns the UIDL of the msg specified. If called with
522 // no arguments, returns an associative array where each
523 // undeleted msg num is a key, and the msg's uidl is the element
524 // Array element 0 will contain the total number of msgs
525
526 if(!isset($this->FP)) {
527 $this->ERROR = "POP3 uidl: " . _("No connection to server");
528 return false;
529 }
530
531 $fp = $this->FP;
532 $buffer = $this->BUFFER;
533
534 if(!empty($msgNum)) {
535 $cmd = "UIDL $msgNum";
536 $reply = $this->send_cmd($cmd);
537 if(!$this->is_ok($reply))
538 {
539 $this->ERROR = "POP3 uidl: " . _("Error ") . "[$reply]";
540 return false;
541 }
542 list ($ok,$num,$myUidl) = preg_split('/\s+/',$reply);
543 return $myUidl;
544 } else {
545 $this->update_timer();
546
547 $UIDLArray = array();
548 $Total = $this->COUNT;
549 $UIDLArray[0] = $Total;
550
551 if ($Total < 1)
552 {
553 return $UIDLArray;
554 }
555 $cmd = "UIDL";
556 fwrite($fp, "UIDL\r\n");
557 $reply = fgets($fp, $buffer);
558 $reply = $this->strip_clf($reply);
559 if($this->DEBUG) { @error_log("POP3 SEND [$cmd] GOT [$reply]",0); }
560 if(!$this->is_ok($reply))
561 {
562 $this->ERROR = "POP3 uidl: " . _("Error ") . "[$reply]";
563 return false;
564 }
565
566 $line = "";
567 $count = 1;
568 $line = fgets($fp,$buffer);
569 while ( !preg_match('/^\.\r\n/',$line)) {
570 list ($msg,$msgUidl) = preg_split('/\s+/',$line);
571 $msgUidl = $this->strip_clf($msgUidl);
572 if($count == $msg) {
573 $UIDLArray[$msg] = $msgUidl;
574 }
575 else
576 {
577 $UIDLArray[$count] = 'deleted';
578 }
579 $count++;
580 $line = fgets($fp,$buffer);
581 }
582 }
583 return $UIDLArray;
584 }
585
586 function delete ($msgNum = "") {
587 // Flags a specified msg as deleted. The msg will not
588 // be deleted until a quit() method is called.
589
590 if(!isset($this->FP))
591 {
592 $this->ERROR = "POP3 delete: " . _("No connection to server");
593 return false;
594 }
595 if(empty($msgNum))
596 {
597 $this->ERROR = "POP3 delete: " . _("No msg number submitted");
598 return false;
599 }
600 $reply = $this->send_cmd("DELE $msgNum");
601 if(!$this->is_ok($reply))
602 {
603 $this->ERROR = "POP3 delete: " . _("Command failed ") . "[$reply]";
604 return false;
605 }
606 return true;
607 }
608
609 // *********************************************************
610
611 // The following methods are internal to the class.
612
613 function is_ok ($cmd = "") {
614 // Return true or false on +OK or -ERR
615
616 if( empty($cmd) )
617 return false;
618 else
619 return( stripos($cmd, '+OK') !== false );
620 }
621
622 function strip_clf ($text = "") {
623 // Strips \r\n from server responses
624
625 if(empty($text))
626 return $text;
627 else {
628 $stripped = str_replace(array("\r","\n"),'',$text);
629 return $stripped;
630 }
631 }
632
633 function parse_banner ( $server_text ) {
634 $outside = true;
635 $banner = "";
636 $length = strlen($server_text);
637 for($count =0; $count < $length; $count++)
638 {
639 $digit = substr($server_text,$count,1);
640 if(!empty($digit)) {
641 if( (!$outside) && ($digit != '<') && ($digit != '>') )
642 {
643 $banner .= $digit;
644 }
645 if ($digit == '<')
646 {
647 $outside = false;
648 }
649 if($digit == '>')
650 {
651 $outside = true;
652 }
653 }
654 }
655 $banner = $this->strip_clf($banner); // Just in case
656 return "<$banner>";
657 }
658
659} // End class
660
661// For php4 compatibility
662if (!function_exists("stripos")) {
663 function stripos($haystack, $needle){
664 return strpos($haystack, stristr( $haystack, $needle ));
665 }
666}
667
Ui Ux Design – Teachers Night Out https://cardgames4educators.com Wed, 16 Oct 2024 22:24:18 +0000 en-US hourly 1 https://wordpress.org/?v=6.9.4 https://cardgames4educators.com/wp-content/uploads/2024/06/cropped-Card-4-Educators-logo-32x32.png Ui Ux Design – Teachers Night Out https://cardgames4educators.com 32 32 Masters In English How English Speaker https://cardgames4educators.com/masters-in-english-how-english-speaker/ https://cardgames4educators.com/masters-in-english-how-english-speaker/#comments Mon, 27 May 2024 08:54:45 +0000 https://themexriver.com/wp/kadu/?p=1

Erat himenaeos neque id sagittis massa. Hac suscipit pulvinar dignissim platea magnis eu. Don tellus a pharetra inceptos efficitur dui pulvinar. Feugiat facilisis penatibus pulvinar nunc dictumst donec odio platea habitasse. Lacus porta dolor purus elit ante bibendum tortor netus taciti nullam cubilia. Erat per suspendisse placerat morbi egestas pulvinar bibendum sollicitudin nec. Euismod cubilia eleifend velit himenaeos sodales lectus. Leo maximus cras ac porttitor aliquam torquent pulvinar odio volutpat parturient. Quisque risus finibus suspendisse mus purus magnis facilisi condimentum consectetur dui. Curae elit suspendisse cursus vehicula.

Turpis taciti class non vel pretium quis pulvinar tempor lobortis nunc. Libero phasellus parturient sapien volutpat malesuada ornare. Cubilia dignissim sollicitudin rhoncus lacinia maximus. Cras lorem fermentum bibendum pellentesque nisl etiam ligula enim cubilia. Vulputate pede sapien torquent montes tempus malesuada in mattis dis turpis vitae. Porta est tempor ex eget feugiat vulputate ipsum. Justo nec iaculis habitant diam arcu fermentum.

We offer comprehen sive emplo ment services such as assistance wit employer compliance.Our company is your strategic HR partner as instead of HR. john smithson

Cubilia dignissim sollicitudin rhoncus lacinia maximus. Cras lorem fermentum bibendum pellentesque nisl etiam ligula enim cubilia. Vulputate pede sapien torquent montes tempus malesuada in mattis dis turpis vitae.

Exploring Learning Landscapes in Academic

Feugiat facilisis penatibus pulvinar nunc dictumst donec odio platea habitasse. Lacus porta dolor purus elit ante bibendum tortor netus taciti nullam cubilia. Erat per suspendisse placerat morbi egestas pulvinar bibendum sollicitudin nec. Euismod cubilia eleifend velit himenaeos sodales lectus. Leo maximus cras ac porttitor aliquam torquent.

]]>
https://cardgames4educators.com/masters-in-english-how-english-speaker/feed/ 1