65 public function __construct($host =
'', $port =
null, $ssl =
false)
68 $this->
connect($host, $port, $ssl);
91 public function connect($host, $port =
null, $ssl =
false)
94 $host =
'ssl://' . $host;
98 $port = $ssl ==
'SSL' ? 995 : 110;
103 $this->_socket = @
fsockopen($host, $port, $errno, $errstr, self::TIMEOUT_CONNECTION);
104 if (!$this->_socket) {
108 #require_once 'Zend/Mail/Protocol/Exception.php'; 110 ' (errno = ' . $errno .
' )');
115 strtok($welcome,
'<');
116 $this->_timestamp = strtok(
'>');
117 if (!strpos($this->_timestamp,
'@')) {
118 $this->_timestamp =
null;
120 $this->_timestamp =
'<' . $this->_timestamp .
'>';
123 if ($ssl ===
'TLS') {
126 $result = stream_socket_enable_crypto($this->_socket,
true, STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT);
131 #require_once 'Zend/Mail/Protocol/Exception.php'; 154 #require_once 'Zend/Mail/Protocol/Exception.php'; 169 $result = @fgets($this->_socket);
174 #require_once 'Zend/Mail/Protocol/Exception.php'; 190 #require_once 'Zend/Mail/Protocol/Exception.php'; 196 $line = fgets($this->_socket);
197 while ($line && rtrim($line,
"\r\n") !=
'.') {
198 if ($line[0] ==
'.') {
199 $line = substr($line, 1);
202 $line = fgets($this->_socket);
234 if (!$this->_socket) {
244 fclose($this->_socket);
245 $this->_socket =
null;
273 if ($tryApop && $this->_timestamp) {
275 $this->
request(
"APOP $user " . md5($this->_timestamp . $password));
295 public function status(&$messages, &$octets)
301 list($messages, $octets) = explode(
' ',
$result);
314 if ($msgno !==
null) {
325 list($no, $size) = explode(
' ', trim($line));
326 $messages[(int)$no] = (
int)$size;
327 $line = strtok(
"\n");
343 if ($msgno !==
null) {
358 list($no,
$id) = explode(
' ', trim($line), 2);
359 $messages[(int)$no] =
$id;
380 public function top($msgno, $lines = 0, $fallback =
false)
382 if ($this->hasTop ===
false) {
389 #require_once 'Zend/Mail/Protocol/Exception.php'; 393 $this->hasTop =
true;
395 $lines = (!$lines || $lines < 1) ? 0 : (
int)$lines;
400 $this->hasTop =
false;
457 public function delete($msgno)
connect($host, $port=null, $ssl=false)
status(&$messages, &$octets)
fsockopen(&$errorNumber, &$errorMessage)
request($request, $multiline=false)
top($msgno, $lines=0, $fallback=false)
__construct($host='', $port=null, $ssl=false)
login($user, $password, $tryApop=true)
readResponse($multiline=false)