| :mod:`poplib` --- POP3 protocol client | 
 | ====================================== | 
 |  | 
 | .. module:: poplib | 
 |    :synopsis: POP3 protocol client (requires sockets). | 
 | .. sectionauthor:: Andrew T. Csillag | 
 | .. revised by ESR, January 2000 | 
 |  | 
 | .. index:: pair: POP3; protocol | 
 |  | 
 | **Source code:** :source:`Lib/poplib.py` | 
 |  | 
 | -------------- | 
 |  | 
 | This module defines a class, :class:`POP3`, which encapsulates a connection to a | 
 | POP3 server and implements the protocol as defined in :rfc:`1725`.  The | 
 | :class:`POP3` class supports both the minimal and optional command sets. | 
 | Additionally, this module provides a class :class:`POP3_SSL`, which provides | 
 | support for connecting to POP3 servers that use SSL as an underlying protocol | 
 | layer. | 
 |  | 
 | Note that POP3, though widely supported, is obsolescent.  The implementation | 
 | quality of POP3 servers varies widely, and too many are quite poor. If your | 
 | mailserver supports IMAP, you would be better off using the | 
 | :class:`imaplib.IMAP4` class, as IMAP servers tend to be better implemented. | 
 |  | 
 | A single class is provided by the :mod:`poplib` module: | 
 |  | 
 |  | 
 | .. class:: POP3(host[, port[, timeout]]) | 
 |  | 
 |    This class implements the actual POP3 protocol.  The connection is created when | 
 |    the instance is initialized. If *port* is omitted, the standard POP3 port (110) | 
 |    is used. The optional *timeout* parameter specifies a timeout in seconds for the | 
 |    connection attempt (if not specified, the global default timeout setting will | 
 |    be used). | 
 |  | 
 |    .. versionchanged:: 2.6 | 
 |       *timeout* was added. | 
 |  | 
 |  | 
 | .. class:: POP3_SSL(host[, port[, keyfile[, certfile]]]) | 
 |  | 
 |    This is a subclass of :class:`POP3` that connects to the server over an SSL | 
 |    encrypted socket.  If *port* is not specified, 995, the standard POP3-over-SSL | 
 |    port is used.  *keyfile* and *certfile* are also optional - they can contain a | 
 |    PEM formatted private key and certificate chain file for the SSL connection. | 
 |  | 
 |    .. versionadded:: 2.4 | 
 |  | 
 | One exception is defined as an attribute of the :mod:`poplib` module: | 
 |  | 
 |  | 
 | .. exception:: error_proto | 
 |  | 
 |    Exception raised on any errors from this module (errors from :mod:`socket` | 
 |    module are not caught). The reason for the exception is passed to the | 
 |    constructor as a string. | 
 |  | 
 |  | 
 | .. seealso:: | 
 |  | 
 |    Module :mod:`imaplib` | 
 |       The standard Python IMAP module. | 
 |  | 
 |    `Frequently Asked Questions About Fetchmail <http://www.catb.org/~esr/fetchmail/fetchmail-FAQ.html>`_ | 
 |       The FAQ for the :program:`fetchmail` POP/IMAP client collects information on | 
 |       POP3 server variations and RFC noncompliance that may be useful if you need to | 
 |       write an application based on the POP protocol. | 
 |  | 
 |  | 
 | .. _pop3-objects: | 
 |  | 
 | POP3 Objects | 
 | ------------ | 
 |  | 
 | All POP3 commands are represented by methods of the same name, in lower-case; | 
 | most return the response text sent by the server. | 
 |  | 
 | An :class:`POP3` instance has the following methods: | 
 |  | 
 |  | 
 | .. method:: POP3.set_debuglevel(level) | 
 |  | 
 |    Set the instance's debugging level.  This controls the amount of debugging | 
 |    output printed.  The default, ``0``, produces no debugging output.  A value of | 
 |    ``1`` produces a moderate amount of debugging output, generally a single line | 
 |    per request.  A value of ``2`` or higher produces the maximum amount of | 
 |    debugging output, logging each line sent and received on the control connection. | 
 |  | 
 |  | 
 | .. method:: POP3.getwelcome() | 
 |  | 
 |    Returns the greeting string sent by the POP3 server. | 
 |  | 
 |  | 
 | .. method:: POP3.user(username) | 
 |  | 
 |    Send user command, response should indicate that a password is required. | 
 |  | 
 |  | 
 | .. method:: POP3.pass_(password) | 
 |  | 
 |    Send password, response includes message count and mailbox size. Note: the | 
 |    mailbox on the server is locked until :meth:`quit` is called. | 
 |  | 
 |  | 
 | .. method:: POP3.apop(user, secret) | 
 |  | 
 |    Use the more secure APOP authentication to log into the POP3 server. | 
 |  | 
 |  | 
 | .. method:: POP3.rpop(user) | 
 |  | 
 |    Use RPOP authentication (similar to UNIX r-commands) to log into POP3 server. | 
 |  | 
 |  | 
 | .. method:: POP3.stat() | 
 |  | 
 |    Get mailbox status.  The result is a tuple of 2 integers: ``(message count, | 
 |    mailbox size)``. | 
 |  | 
 |  | 
 | .. method:: POP3.list([which]) | 
 |  | 
 |    Request message list, result is in the form ``(response, ['mesg_num octets', | 
 |    ...], octets)``. If *which* is set, it is the message to list. | 
 |  | 
 |  | 
 | .. method:: POP3.retr(which) | 
 |  | 
 |    Retrieve whole message number *which*, and set its seen flag. Result is in form | 
 |    ``(response, ['line', ...], octets)``. | 
 |  | 
 |  | 
 | .. method:: POP3.dele(which) | 
 |  | 
 |    Flag message number *which* for deletion.  On most servers deletions are not | 
 |    actually performed until QUIT (the major exception is Eudora QPOP, which | 
 |    deliberately violates the RFCs by doing pending deletes on any disconnect). | 
 |  | 
 |  | 
 | .. method:: POP3.rset() | 
 |  | 
 |    Remove any deletion marks for the mailbox. | 
 |  | 
 |  | 
 | .. method:: POP3.noop() | 
 |  | 
 |    Do nothing.  Might be used as a keep-alive. | 
 |  | 
 |  | 
 | .. method:: POP3.quit() | 
 |  | 
 |    Signoff:  commit changes, unlock mailbox, drop connection. | 
 |  | 
 |  | 
 | .. method:: POP3.top(which, howmuch) | 
 |  | 
 |    Retrieves the message header plus *howmuch* lines of the message after the | 
 |    header of message number *which*. Result is in form ``(response, ['line', ...], | 
 |    octets)``. | 
 |  | 
 |    The POP3 TOP command this method uses, unlike the RETR command, doesn't set the | 
 |    message's seen flag; unfortunately, TOP is poorly specified in the RFCs and is | 
 |    frequently broken in off-brand servers. Test this method by hand against the | 
 |    POP3 servers you will use before trusting it. | 
 |  | 
 |  | 
 | .. method:: POP3.uidl([which]) | 
 |  | 
 |    Return message digest (unique id) list. If *which* is specified, result contains | 
 |    the unique id for that message in the form ``'response mesgnum uid``, otherwise | 
 |    result is list ``(response, ['mesgnum uid', ...], octets)``. | 
 |  | 
 | Instances of :class:`POP3_SSL` have no additional methods. The interface of this | 
 | subclass is identical to its parent. | 
 |  | 
 |  | 
 | .. _pop3-example: | 
 |  | 
 | POP3 Example | 
 | ------------ | 
 |  | 
 | Here is a minimal example (without error checking) that opens a mailbox and | 
 | retrieves and prints all messages:: | 
 |  | 
 |    import getpass, poplib | 
 |  | 
 |    M = poplib.POP3('localhost') | 
 |    M.user(getpass.getuser()) | 
 |    M.pass_(getpass.getpass()) | 
 |    numMessages = len(M.list()[1]) | 
 |    for i in range(numMessages): | 
 |        for j in M.retr(i+1)[1]: | 
 |            print j | 
 |  | 
 | At the end of the module, there is a test section that contains a more extensive | 
 | example of usage. | 
 |  |