/Doc/library/poplib.rst
http://unladen-swallow.googlecode.com/ · ReStructuredText · 197 lines · 115 code · 82 blank · 0 comment · 0 complexity · ef8d1836e77759e7d51c6e04e4a509f8 MD5 · raw file
- :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
- 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.