xref: /third_party/python/Doc/library/poplib.rst (revision 7db96d56)
17db96d56Sopenharmony_ci:mod:`poplib` --- POP3 protocol client
27db96d56Sopenharmony_ci======================================
37db96d56Sopenharmony_ci
47db96d56Sopenharmony_ci.. module:: poplib
57db96d56Sopenharmony_ci   :synopsis: POP3 protocol client (requires sockets).
67db96d56Sopenharmony_ci
77db96d56Sopenharmony_ci.. sectionauthor:: Andrew T. Csillag
87db96d56Sopenharmony_ci.. revised by ESR, January 2000
97db96d56Sopenharmony_ci
107db96d56Sopenharmony_ci**Source code:** :source:`Lib/poplib.py`
117db96d56Sopenharmony_ci
127db96d56Sopenharmony_ci.. index:: pair: POP3; protocol
137db96d56Sopenharmony_ci
147db96d56Sopenharmony_ci--------------
157db96d56Sopenharmony_ci
167db96d56Sopenharmony_ciThis module defines a class, :class:`POP3`, which encapsulates a connection to a
177db96d56Sopenharmony_ciPOP3 server and implements the protocol as defined in :rfc:`1939`. The
187db96d56Sopenharmony_ci:class:`POP3` class supports both the minimal and optional command sets from
197db96d56Sopenharmony_ci:rfc:`1939`. The :class:`POP3` class also supports the ``STLS`` command introduced
207db96d56Sopenharmony_ciin :rfc:`2595` to enable encrypted communication on an already established connection.
217db96d56Sopenharmony_ci
227db96d56Sopenharmony_ciAdditionally, this module provides a class :class:`POP3_SSL`, which provides
237db96d56Sopenharmony_cisupport for connecting to POP3 servers that use SSL as an underlying protocol
247db96d56Sopenharmony_cilayer.
257db96d56Sopenharmony_ci
267db96d56Sopenharmony_ciNote that POP3, though widely supported, is obsolescent.  The implementation
277db96d56Sopenharmony_ciquality of POP3 servers varies widely, and too many are quite poor. If your
287db96d56Sopenharmony_cimailserver supports IMAP, you would be better off using the
297db96d56Sopenharmony_ci:class:`imaplib.IMAP4` class, as IMAP servers tend to be better implemented.
307db96d56Sopenharmony_ci
317db96d56Sopenharmony_ci.. include:: ../includes/wasm-notavail.rst
327db96d56Sopenharmony_ci
337db96d56Sopenharmony_ciThe :mod:`poplib` module provides two classes:
347db96d56Sopenharmony_ci
357db96d56Sopenharmony_ci
367db96d56Sopenharmony_ci.. class:: POP3(host, port=POP3_PORT[, timeout])
377db96d56Sopenharmony_ci
387db96d56Sopenharmony_ci   This class implements the actual POP3 protocol.  The connection is created when
397db96d56Sopenharmony_ci   the instance is initialized. If *port* is omitted, the standard POP3 port (110)
407db96d56Sopenharmony_ci   is used. The optional *timeout* parameter specifies a timeout in seconds for the
417db96d56Sopenharmony_ci   connection attempt (if not specified, the global default timeout setting will
427db96d56Sopenharmony_ci   be used).
437db96d56Sopenharmony_ci
447db96d56Sopenharmony_ci   .. audit-event:: poplib.connect self,host,port poplib.POP3
457db96d56Sopenharmony_ci
467db96d56Sopenharmony_ci   .. audit-event:: poplib.putline self,line poplib.POP3
477db96d56Sopenharmony_ci
487db96d56Sopenharmony_ci      All commands will raise an :ref:`auditing event <auditing>`
497db96d56Sopenharmony_ci      ``poplib.putline`` with arguments ``self`` and ``line``,
507db96d56Sopenharmony_ci      where ``line`` is the bytes about to be sent to the remote host.
517db96d56Sopenharmony_ci
527db96d56Sopenharmony_ci   .. versionchanged:: 3.9
537db96d56Sopenharmony_ci      If the *timeout* parameter is set to be zero, it will raise a
547db96d56Sopenharmony_ci      :class:`ValueError` to prevent the creation of a non-blocking socket.
557db96d56Sopenharmony_ci
567db96d56Sopenharmony_ci.. class:: POP3_SSL(host, port=POP3_SSL_PORT, keyfile=None, certfile=None, timeout=None, context=None)
577db96d56Sopenharmony_ci
587db96d56Sopenharmony_ci   This is a subclass of :class:`POP3` that connects to the server over an SSL
597db96d56Sopenharmony_ci   encrypted socket.  If *port* is not specified, 995, the standard POP3-over-SSL
607db96d56Sopenharmony_ci   port is used.  *timeout* works as in the :class:`POP3` constructor.
617db96d56Sopenharmony_ci   *context* is an optional :class:`ssl.SSLContext` object which allows
627db96d56Sopenharmony_ci   bundling SSL configuration options, certificates and private keys into a
637db96d56Sopenharmony_ci   single (potentially long-lived) structure.  Please read :ref:`ssl-security`
647db96d56Sopenharmony_ci   for best practices.
657db96d56Sopenharmony_ci
667db96d56Sopenharmony_ci   *keyfile* and *certfile* are a legacy alternative to *context* - they can
677db96d56Sopenharmony_ci   point to PEM-formatted private key and certificate chain files,
687db96d56Sopenharmony_ci   respectively, for the SSL connection.
697db96d56Sopenharmony_ci
707db96d56Sopenharmony_ci   .. audit-event:: poplib.connect self,host,port poplib.POP3_SSL
717db96d56Sopenharmony_ci
727db96d56Sopenharmony_ci   .. audit-event:: poplib.putline self,line poplib.POP3_SSL
737db96d56Sopenharmony_ci
747db96d56Sopenharmony_ci      All commands will raise an :ref:`auditing event <auditing>`
757db96d56Sopenharmony_ci      ``poplib.putline`` with arguments ``self`` and ``line``,
767db96d56Sopenharmony_ci      where ``line`` is the bytes about to be sent to the remote host.
777db96d56Sopenharmony_ci
787db96d56Sopenharmony_ci   .. versionchanged:: 3.2
797db96d56Sopenharmony_ci      *context* parameter added.
807db96d56Sopenharmony_ci
817db96d56Sopenharmony_ci   .. versionchanged:: 3.4
827db96d56Sopenharmony_ci      The class now supports hostname check with
837db96d56Sopenharmony_ci      :attr:`ssl.SSLContext.check_hostname` and *Server Name Indication* (see
847db96d56Sopenharmony_ci      :data:`ssl.HAS_SNI`).
857db96d56Sopenharmony_ci
867db96d56Sopenharmony_ci   .. deprecated:: 3.6
877db96d56Sopenharmony_ci
887db96d56Sopenharmony_ci       *keyfile* and *certfile* are deprecated in favor of *context*.
897db96d56Sopenharmony_ci       Please use :meth:`ssl.SSLContext.load_cert_chain` instead, or let
907db96d56Sopenharmony_ci       :func:`ssl.create_default_context` select the system's trusted CA
917db96d56Sopenharmony_ci       certificates for you.
927db96d56Sopenharmony_ci
937db96d56Sopenharmony_ci   .. versionchanged:: 3.9
947db96d56Sopenharmony_ci      If the *timeout* parameter is set to be zero, it will raise a
957db96d56Sopenharmony_ci      :class:`ValueError` to prevent the creation of a non-blocking socket.
967db96d56Sopenharmony_ci
977db96d56Sopenharmony_ciOne exception is defined as an attribute of the :mod:`poplib` module:
987db96d56Sopenharmony_ci
997db96d56Sopenharmony_ci
1007db96d56Sopenharmony_ci.. exception:: error_proto
1017db96d56Sopenharmony_ci
1027db96d56Sopenharmony_ci   Exception raised on any errors from this module (errors from :mod:`socket`
1037db96d56Sopenharmony_ci   module are not caught). The reason for the exception is passed to the
1047db96d56Sopenharmony_ci   constructor as a string.
1057db96d56Sopenharmony_ci
1067db96d56Sopenharmony_ci
1077db96d56Sopenharmony_ci.. seealso::
1087db96d56Sopenharmony_ci
1097db96d56Sopenharmony_ci   Module :mod:`imaplib`
1107db96d56Sopenharmony_ci      The standard Python IMAP module.
1117db96d56Sopenharmony_ci
1127db96d56Sopenharmony_ci   `Frequently Asked Questions About Fetchmail <http://www.catb.org/~esr/fetchmail/fetchmail-FAQ.html>`_
1137db96d56Sopenharmony_ci      The FAQ for the :program:`fetchmail` POP/IMAP client collects information on
1147db96d56Sopenharmony_ci      POP3 server variations and RFC noncompliance that may be useful if you need to
1157db96d56Sopenharmony_ci      write an application based on the POP protocol.
1167db96d56Sopenharmony_ci
1177db96d56Sopenharmony_ci
1187db96d56Sopenharmony_ci.. _pop3-objects:
1197db96d56Sopenharmony_ci
1207db96d56Sopenharmony_ciPOP3 Objects
1217db96d56Sopenharmony_ci------------
1227db96d56Sopenharmony_ci
1237db96d56Sopenharmony_ciAll POP3 commands are represented by methods of the same name, in lowercase;
1247db96d56Sopenharmony_cimost return the response text sent by the server.
1257db96d56Sopenharmony_ci
1267db96d56Sopenharmony_ciA :class:`POP3` instance has the following methods:
1277db96d56Sopenharmony_ci
1287db96d56Sopenharmony_ci
1297db96d56Sopenharmony_ci.. method:: POP3.set_debuglevel(level)
1307db96d56Sopenharmony_ci
1317db96d56Sopenharmony_ci   Set the instance's debugging level.  This controls the amount of debugging
1327db96d56Sopenharmony_ci   output printed.  The default, ``0``, produces no debugging output.  A value of
1337db96d56Sopenharmony_ci   ``1`` produces a moderate amount of debugging output, generally a single line
1347db96d56Sopenharmony_ci   per request.  A value of ``2`` or higher produces the maximum amount of
1357db96d56Sopenharmony_ci   debugging output, logging each line sent and received on the control connection.
1367db96d56Sopenharmony_ci
1377db96d56Sopenharmony_ci
1387db96d56Sopenharmony_ci.. method:: POP3.getwelcome()
1397db96d56Sopenharmony_ci
1407db96d56Sopenharmony_ci   Returns the greeting string sent by the POP3 server.
1417db96d56Sopenharmony_ci
1427db96d56Sopenharmony_ci
1437db96d56Sopenharmony_ci.. method:: POP3.capa()
1447db96d56Sopenharmony_ci
1457db96d56Sopenharmony_ci   Query the server's capabilities as specified in :rfc:`2449`.
1467db96d56Sopenharmony_ci   Returns a dictionary in the form ``{'name': ['param'...]}``.
1477db96d56Sopenharmony_ci
1487db96d56Sopenharmony_ci   .. versionadded:: 3.4
1497db96d56Sopenharmony_ci
1507db96d56Sopenharmony_ci
1517db96d56Sopenharmony_ci.. method:: POP3.user(username)
1527db96d56Sopenharmony_ci
1537db96d56Sopenharmony_ci   Send user command, response should indicate that a password is required.
1547db96d56Sopenharmony_ci
1557db96d56Sopenharmony_ci
1567db96d56Sopenharmony_ci.. method:: POP3.pass_(password)
1577db96d56Sopenharmony_ci
1587db96d56Sopenharmony_ci   Send password, response includes message count and mailbox size. Note: the
1597db96d56Sopenharmony_ci   mailbox on the server is locked until :meth:`~poplib.quit` is called.
1607db96d56Sopenharmony_ci
1617db96d56Sopenharmony_ci
1627db96d56Sopenharmony_ci.. method:: POP3.apop(user, secret)
1637db96d56Sopenharmony_ci
1647db96d56Sopenharmony_ci   Use the more secure APOP authentication to log into the POP3 server.
1657db96d56Sopenharmony_ci
1667db96d56Sopenharmony_ci
1677db96d56Sopenharmony_ci.. method:: POP3.rpop(user)
1687db96d56Sopenharmony_ci
1697db96d56Sopenharmony_ci   Use RPOP authentication (similar to UNIX r-commands) to log into POP3 server.
1707db96d56Sopenharmony_ci
1717db96d56Sopenharmony_ci
1727db96d56Sopenharmony_ci.. method:: POP3.stat()
1737db96d56Sopenharmony_ci
1747db96d56Sopenharmony_ci   Get mailbox status.  The result is a tuple of 2 integers: ``(message count,
1757db96d56Sopenharmony_ci   mailbox size)``.
1767db96d56Sopenharmony_ci
1777db96d56Sopenharmony_ci
1787db96d56Sopenharmony_ci.. method:: POP3.list([which])
1797db96d56Sopenharmony_ci
1807db96d56Sopenharmony_ci   Request message list, result is in the form ``(response, ['mesg_num octets',
1817db96d56Sopenharmony_ci   ...], octets)``. If *which* is set, it is the message to list.
1827db96d56Sopenharmony_ci
1837db96d56Sopenharmony_ci
1847db96d56Sopenharmony_ci.. method:: POP3.retr(which)
1857db96d56Sopenharmony_ci
1867db96d56Sopenharmony_ci   Retrieve whole message number *which*, and set its seen flag. Result is in form
1877db96d56Sopenharmony_ci   ``(response, ['line', ...], octets)``.
1887db96d56Sopenharmony_ci
1897db96d56Sopenharmony_ci
1907db96d56Sopenharmony_ci.. method:: POP3.dele(which)
1917db96d56Sopenharmony_ci
1927db96d56Sopenharmony_ci   Flag message number *which* for deletion.  On most servers deletions are not
1937db96d56Sopenharmony_ci   actually performed until QUIT (the major exception is Eudora QPOP, which
1947db96d56Sopenharmony_ci   deliberately violates the RFCs by doing pending deletes on any disconnect).
1957db96d56Sopenharmony_ci
1967db96d56Sopenharmony_ci
1977db96d56Sopenharmony_ci.. method:: POP3.rset()
1987db96d56Sopenharmony_ci
1997db96d56Sopenharmony_ci   Remove any deletion marks for the mailbox.
2007db96d56Sopenharmony_ci
2017db96d56Sopenharmony_ci
2027db96d56Sopenharmony_ci.. method:: POP3.noop()
2037db96d56Sopenharmony_ci
2047db96d56Sopenharmony_ci   Do nothing.  Might be used as a keep-alive.
2057db96d56Sopenharmony_ci
2067db96d56Sopenharmony_ci
2077db96d56Sopenharmony_ci.. method:: POP3.quit()
2087db96d56Sopenharmony_ci
2097db96d56Sopenharmony_ci   Signoff:  commit changes, unlock mailbox, drop connection.
2107db96d56Sopenharmony_ci
2117db96d56Sopenharmony_ci
2127db96d56Sopenharmony_ci.. method:: POP3.top(which, howmuch)
2137db96d56Sopenharmony_ci
2147db96d56Sopenharmony_ci   Retrieves the message header plus *howmuch* lines of the message after the
2157db96d56Sopenharmony_ci   header of message number *which*. Result is in form ``(response, ['line', ...],
2167db96d56Sopenharmony_ci   octets)``.
2177db96d56Sopenharmony_ci
2187db96d56Sopenharmony_ci   The POP3 TOP command this method uses, unlike the RETR command, doesn't set the
2197db96d56Sopenharmony_ci   message's seen flag; unfortunately, TOP is poorly specified in the RFCs and is
2207db96d56Sopenharmony_ci   frequently broken in off-brand servers. Test this method by hand against the
2217db96d56Sopenharmony_ci   POP3 servers you will use before trusting it.
2227db96d56Sopenharmony_ci
2237db96d56Sopenharmony_ci
2247db96d56Sopenharmony_ci.. method:: POP3.uidl(which=None)
2257db96d56Sopenharmony_ci
2267db96d56Sopenharmony_ci   Return message digest (unique id) list. If *which* is specified, result contains
2277db96d56Sopenharmony_ci   the unique id for that message in the form ``'response mesgnum uid``, otherwise
2287db96d56Sopenharmony_ci   result is list ``(response, ['mesgnum uid', ...], octets)``.
2297db96d56Sopenharmony_ci
2307db96d56Sopenharmony_ci
2317db96d56Sopenharmony_ci.. method:: POP3.utf8()
2327db96d56Sopenharmony_ci
2337db96d56Sopenharmony_ci   Try to switch to UTF-8 mode. Returns the server response if successful,
2347db96d56Sopenharmony_ci   raises :class:`error_proto` if not. Specified in :RFC:`6856`.
2357db96d56Sopenharmony_ci
2367db96d56Sopenharmony_ci   .. versionadded:: 3.5
2377db96d56Sopenharmony_ci
2387db96d56Sopenharmony_ci
2397db96d56Sopenharmony_ci.. method:: POP3.stls(context=None)
2407db96d56Sopenharmony_ci
2417db96d56Sopenharmony_ci   Start a TLS session on the active connection as specified in :rfc:`2595`.
2427db96d56Sopenharmony_ci   This is only allowed before user authentication
2437db96d56Sopenharmony_ci
2447db96d56Sopenharmony_ci   *context* parameter is a :class:`ssl.SSLContext` object which allows
2457db96d56Sopenharmony_ci   bundling SSL configuration options, certificates and private keys into
2467db96d56Sopenharmony_ci   a single (potentially long-lived) structure.  Please read :ref:`ssl-security`
2477db96d56Sopenharmony_ci   for best practices.
2487db96d56Sopenharmony_ci
2497db96d56Sopenharmony_ci   This method supports hostname checking via
2507db96d56Sopenharmony_ci   :attr:`ssl.SSLContext.check_hostname` and *Server Name Indication* (see
2517db96d56Sopenharmony_ci   :data:`ssl.HAS_SNI`).
2527db96d56Sopenharmony_ci
2537db96d56Sopenharmony_ci   .. versionadded:: 3.4
2547db96d56Sopenharmony_ci
2557db96d56Sopenharmony_ci
2567db96d56Sopenharmony_ciInstances of :class:`POP3_SSL` have no additional methods. The interface of this
2577db96d56Sopenharmony_cisubclass is identical to its parent.
2587db96d56Sopenharmony_ci
2597db96d56Sopenharmony_ci
2607db96d56Sopenharmony_ci.. _pop3-example:
2617db96d56Sopenharmony_ci
2627db96d56Sopenharmony_ciPOP3 Example
2637db96d56Sopenharmony_ci------------
2647db96d56Sopenharmony_ci
2657db96d56Sopenharmony_ciHere is a minimal example (without error checking) that opens a mailbox and
2667db96d56Sopenharmony_ciretrieves and prints all messages::
2677db96d56Sopenharmony_ci
2687db96d56Sopenharmony_ci   import getpass, poplib
2697db96d56Sopenharmony_ci
2707db96d56Sopenharmony_ci   M = poplib.POP3('localhost')
2717db96d56Sopenharmony_ci   M.user(getpass.getuser())
2727db96d56Sopenharmony_ci   M.pass_(getpass.getpass())
2737db96d56Sopenharmony_ci   numMessages = len(M.list()[1])
2747db96d56Sopenharmony_ci   for i in range(numMessages):
2757db96d56Sopenharmony_ci       for j in M.retr(i+1)[1]:
2767db96d56Sopenharmony_ci           print(j)
2777db96d56Sopenharmony_ci
2787db96d56Sopenharmony_ciAt the end of the module, there is a test section that contains a more extensive
2797db96d56Sopenharmony_ciexample of usage.
280