Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Public Member Functions | Data Fields | Protected Attributes
Zend_Mail_Protocol_Pop3 Class Reference

Public Member Functions

 __construct ($host='', $port=null, $ssl=false)
 
 __destruct ()
 
 connect ($host, $port=null, $ssl=false)
 
 sendRequest ($request)
 
 readResponse ($multiline=false)
 
 request ($request, $multiline=false)
 
 logout ()
 
 capa ()
 
 login ($user, $password, $tryApop=true)
 
 status (&$messages, &$octets)
 
 getList ($msgno=null)
 
 uniqueid ($msgno=null)
 
 top ($msgno, $lines=0, $fallback=false)
 
 retrive ($msgno)
 
 retrieve ($msgno)
 
 noop ()
 
 delete ($msgno)
 
 undelete ()
 

Data Fields

const TIMEOUT_CONNECTION = 30
 
 $hasTop = null
 

Protected Attributes

 $_socket
 
 $_timestamp
 

Detailed Description

Definition at line 31 of file Pop3.php.

Constructor & Destructor Documentation

◆ __construct()

__construct (   $host = '',
  $port = null,
  $ssl = false 
)

Public constructor

Parameters
string$hosthostname or IP address of POP3 server, if given connect() is called
int | null$portport of POP3 server, null for default (110 or 995 for ssl)
bool | string$ssluse ssl? 'SSL', 'TLS' or false
Exceptions
Zend_Mail_Protocol_Exception

Definition at line 65 of file Pop3.php.

66  {
67  if ($host) {
68  $this->connect($host, $port, $ssl);
69  }
70  }
connect($host, $port=null, $ssl=false)
Definition: Pop3.php:91

◆ __destruct()

__destruct ( )

Public destructor

Definition at line 76 of file Pop3.php.

77  {
78  $this->logout();
79  }

Member Function Documentation

◆ capa()

capa ( )

Get capabilities from POP3 server

Returns
array list of capabilities
Exceptions
Zend_Mail_Protocol_Exception

Definition at line 255 of file Pop3.php.

256  {
257  $result = $this->request('CAPA', true);
258  return explode("\n", $result);
259  }
request($request, $multiline=false)
Definition: Pop3.php:220

◆ connect()

connect (   $host,
  $port = null,
  $ssl = false 
)

Open connection to POP3 server

Parameters
string$hosthostname or IP address of POP3 server
int | null$portof POP3 server, default is 110 (995 for ssl)
string | bool$ssluse 'SSL', 'TLS' or false
Returns
string welcome message
Exceptions
Zend_Mail_Protocol_Exception
See also
Zend_Mail_Protocol_Exception
Zend_Mail_Protocol_Exception

Definition at line 91 of file Pop3.php.

92  {
93  if ($ssl == 'SSL') {
94  $host = 'ssl://' . $host;
95  }
96 
97  if ($port === null) {
98  $port = $ssl == 'SSL' ? 995 : 110;
99  }
100 
101  $errno = 0;
102  $errstr = '';
103  $this->_socket = @fsockopen($host, $port, $errno, $errstr, self::TIMEOUT_CONNECTION);
104  if (!$this->_socket) {
108  #require_once 'Zend/Mail/Protocol/Exception.php';
109  throw new Zend_Mail_Protocol_Exception('cannot connect to host; error = ' . $errstr .
110  ' (errno = ' . $errno . ' )');
111  }
112 
113  $welcome = $this->readResponse();
114 
115  strtok($welcome, '<');
116  $this->_timestamp = strtok('>');
117  if (!strpos($this->_timestamp, '@')) {
118  $this->_timestamp = null;
119  } else {
120  $this->_timestamp = '<' . $this->_timestamp . '>';
121  }
122 
123  if ($ssl === 'TLS') {
124  $this->request('STLS');
125  // TODO: Add STREAM_CRYPTO_METHOD_TLSv1_3_CLIENT in the future when it is supported by PHP
126  $result = stream_socket_enable_crypto($this->_socket, true, STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT);
127  if (!$result) {
131  #require_once 'Zend/Mail/Protocol/Exception.php';
132  throw new Zend_Mail_Protocol_Exception('cannot enable TLS');
133  }
134  }
135 
136  return $welcome;
137  }
fsockopen(&$errorNumber, &$errorMessage)
Definition: http_mock.php:37
request($request, $multiline=false)
Definition: Pop3.php:220
readResponse($multiline=false)
Definition: Pop3.php:167

◆ delete()

delete (   $msgno)

Make a DELE count to remove a message

Returns
null
Exceptions
Zend_Mail_Protocol_Exception

Definition at line 457 of file Pop3.php.

458  {
459  $this->request("DELE $msgno");
460  }
request($request, $multiline=false)
Definition: Pop3.php:220

◆ getList()

getList (   $msgno = null)

Make LIST call for size of message(s)

Parameters
int | null$msgnonumber of message, null for all
Returns
int|array size of given message or list with array(num => size)
Exceptions
Zend_Mail_Protocol_Exception

Definition at line 312 of file Pop3.php.

313  {
314  if ($msgno !== null) {
315  $result = $this->request("LIST $msgno");
316 
317  list(, $result) = explode(' ', $result);
318  return (int)$result;
319  }
320 
321  $result = $this->request('LIST', true);
322  $messages = array();
323  $line = strtok($result, "\n");
324  while ($line) {
325  list($no, $size) = explode(' ', trim($line));
326  $messages[(int)$no] = (int)$size;
327  $line = strtok("\n");
328  }
329 
330  return $messages;
331  }
request($request, $multiline=false)
Definition: Pop3.php:220

◆ login()

login (   $user,
  $password,
  $tryApop = true 
)

Login to POP3 server. Can use APOP

Parameters
string$userusername
string$passwordpassword
bool$try_apopshould APOP be tried?
Returns
void
Exceptions
Zend_Mail_Protocol_Exception

Definition at line 271 of file Pop3.php.

272  {
273  if ($tryApop && $this->_timestamp) {
274  try {
275  $this->request("APOP $user " . md5($this->_timestamp . $password));
276  return;
277  } catch (Zend_Mail_Protocol_Exception $e) {
278  // ignore
279  }
280  }
281 
282  $result = $this->request("USER $user");
283  $result = $this->request("PASS $password");
284  }
request($request, $multiline=false)
Definition: Pop3.php:220

◆ logout()

logout ( )

End communication with POP3 server (also closes socket)

Returns
null

Definition at line 232 of file Pop3.php.

233  {
234  if (!$this->_socket) {
235  return;
236  }
237 
238  try {
239  $this->request('QUIT');
240  } catch (Zend_Mail_Protocol_Exception $e) {
241  // ignore error - we're closing the socket anyway
242  }
243 
244  fclose($this->_socket);
245  $this->_socket = null;
246  }
request($request, $multiline=false)
Definition: Pop3.php:220

◆ noop()

noop ( )

Make a NOOP call, maybe needed for keeping the server happy

Returns
null
Exceptions
Zend_Mail_Protocol_Exception

Definition at line 445 of file Pop3.php.

446  {
447  $this->request('NOOP');
448  }
request($request, $multiline=false)
Definition: Pop3.php:220

◆ readResponse()

readResponse (   $multiline = false)

read a response

Parameters
boolean$multilineresponse has multiple lines and should be read until "<nl>.<nl>"
Returns
string response
Exceptions
Zend_Mail_Protocol_Exception
See also
Zend_Mail_Protocol_Exception
Zend_Mail_Protocol_Exception

Definition at line 167 of file Pop3.php.

168  {
169  $result = @fgets($this->_socket);
170  if (!is_string($result)) {
174  #require_once 'Zend/Mail/Protocol/Exception.php';
175  throw new Zend_Mail_Protocol_Exception('read failed - connection closed?');
176  }
177 
178  $result = trim($result);
179  if (strpos($result, ' ')) {
180  list($status, $message) = explode(' ', $result, 2);
181  } else {
182  $status = $result;
183  $message = '';
184  }
185 
186  if ($status != '+OK') {
190  #require_once 'Zend/Mail/Protocol/Exception.php';
191  throw new Zend_Mail_Protocol_Exception('last request failed');
192  }
193 
194  if ($multiline) {
195  $message = '';
196  $line = fgets($this->_socket);
197  while ($line && rtrim($line, "\r\n") != '.') {
198  if ($line[0] == '.') {
199  $line = substr($line, 1);
200  }
201  $message .= $line;
202  $line = fgets($this->_socket);
203  };
204  }
205 
206  return $message;
207  }
$message
$status
Definition: order_status.php:8

◆ request()

request (   $request,
  $multiline = false 
)

Send request and get resposne

See also
sendRequest(), readResponse()
Parameters
string$requestrequest
bool$multilinemultiline response?
Returns
string result from readResponse()
Exceptions
Zend_Mail_Protocol_Exception

Definition at line 220 of file Pop3.php.

221  {
222  $this->sendRequest($request);
223  return $this->readResponse($multiline);
224  }
sendRequest($request)
Definition: Pop3.php:147
readResponse($multiline=false)
Definition: Pop3.php:167

◆ retrieve()

retrieve (   $msgno)

Make a RETR call for retrieving a full message with headers and body

Parameters
int$msgnomessage number
Returns
string message
Exceptions
Zend_Mail_Protocol_Exception

Definition at line 433 of file Pop3.php.

434  {
435  $result = $this->request("RETR $msgno", true);
436  return $result;
437  }
request($request, $multiline=false)
Definition: Pop3.php:220

◆ retrive()

retrive (   $msgno)

Make a RETR call for retrieving a full message with headers and body

Deprecated:
since 1.1.0; this method has a typo - please use retrieve()
Parameters
int$msgnomessage number
Returns
string message
Exceptions
Zend_Mail_Protocol_Exception

Definition at line 420 of file Pop3.php.

421  {
422  return $this->retrieve($msgno);
423  }

◆ sendRequest()

sendRequest (   $request)

Send a request

Parameters
string$requestyour request without newline
Returns
null
Exceptions
Zend_Mail_Protocol_Exception
See also
Zend_Mail_Protocol_Exception

Definition at line 147 of file Pop3.php.

148  {
149  $result = @fputs($this->_socket, $request . "\r\n");
150  if (!$result) {
154  #require_once 'Zend/Mail/Protocol/Exception.php';
155  throw new Zend_Mail_Protocol_Exception('send failed - connection closed?');
156  }
157  }

◆ status()

status ( $messages,
$octets 
)

Make STAT call for message count and size sum

Parameters
int$messagesout parameter with count of messages
int$octetsout parameter with size in octects of messages
Returns
void
Exceptions
Zend_Mail_Protocol_Exception

Definition at line 295 of file Pop3.php.

296  {
297  $messages = 0;
298  $octets = 0;
299  $result = $this->request('STAT');
300 
301  list($messages, $octets) = explode(' ', $result);
302  }
request($request, $multiline=false)
Definition: Pop3.php:220

◆ top()

top (   $msgno,
  $lines = 0,
  $fallback = false 
)

Make TOP call for getting headers and maybe some body lines This method also sets hasTop - before it it's not known if top is supported

The fallback makes normale RETR call, which retrieves the whole message. Additional lines are not removed.

Parameters
int$msgnonumber of message
int$linesnumber of wanted body lines (empty line is inserted after header lines)
bool$fallbackfallback with full retrieve if top is not supported
Returns
string message headers with wanted body lines
Exceptions
Zend_Mail_Protocol_Exception
See also
Zend_Mail_Protocol_Exception

Definition at line 380 of file Pop3.php.

381  {
382  if ($this->hasTop === false) {
383  if ($fallback) {
384  return $this->retrieve($msgno);
385  } else {
389  #require_once 'Zend/Mail/Protocol/Exception.php';
390  throw new Zend_Mail_Protocol_Exception('top not supported and no fallback wanted');
391  }
392  }
393  $this->hasTop = true;
394 
395  $lines = (!$lines || $lines < 1) ? 0 : (int)$lines;
396 
397  try {
398  $result = $this->request("TOP $msgno $lines", true);
399  } catch (Zend_Mail_Protocol_Exception $e) {
400  $this->hasTop = false;
401  if ($fallback) {
402  $result = $this->retrieve($msgno);
403  } else {
404  throw $e;
405  }
406  }
407 
408  return $result;
409  }
request($request, $multiline=false)
Definition: Pop3.php:220

◆ undelete()

undelete ( )

Make RSET call, which rollbacks delete requests

Returns
null
Exceptions
Zend_Mail_Protocol_Exception

Definition at line 469 of file Pop3.php.

470  {
471  $this->request('RSET');
472  }
request($request, $multiline=false)
Definition: Pop3.php:220

◆ uniqueid()

uniqueid (   $msgno = null)

Make UIDL call for getting a uniqueid

Parameters
int | null$msgnonumber of message, null for all
Returns
string|array uniqueid of message or list with array(num => uniqueid)
Exceptions
Zend_Mail_Protocol_Exception

Definition at line 341 of file Pop3.php.

342  {
343  if ($msgno !== null) {
344  $result = $this->request("UIDL $msgno");
345 
346  list(, $result) = explode(' ', $result);
347  return $result;
348  }
349 
350  $result = $this->request('UIDL', true);
351 
352  $result = explode("\n", $result);
353  $messages = array();
354  foreach ($result as $line) {
355  if (!$line) {
356  continue;
357  }
358  list($no, $id) = explode(' ', trim($line), 2);
359  $messages[(int)$no] = $id;
360  }
361 
362  return $messages;
363 
364  }
$id
Definition: fieldset.phtml:14
request($request, $multiline=false)
Definition: Pop3.php:220

Field Documentation

◆ $_socket

$_socket
protected

Definition at line 48 of file Pop3.php.

◆ $_timestamp

$_timestamp
protected

Definition at line 54 of file Pop3.php.

◆ $hasTop

$hasTop = null

Definition at line 42 of file Pop3.php.

◆ TIMEOUT_CONNECTION

const TIMEOUT_CONNECTION = 30

Default timeout in seconds for initiating session

Definition at line 36 of file Pop3.php.


The documentation for this class was generated from the following file: