poplib
 

POP3 client class.

Based on the J. Myers POP3 draft, Jan. 96

Author: David Ascher <david_ascher@brown.edu>
        [heavily stealing from nntplib.py]
Updated: Piers Lauder <piers@cs.su.oz.au> [Jul '97]


 Modules
                                                                                                                                                                                                                               
regex
socket
string


 Classes
                                                                                                                                                                                                                               
exceptions.Exception
error_proto
POP3


 class POP3
           This class supports both the minimal and optional command sets.
Arguments can be strings or integers (where appropriate)
(e.g.: retr(1) and retr('1') both work equally well.

Minimal Command Set:
        USER name               user(name)
        PASS string             pass_(string)
        STAT                    stat()
        LIST [msg]              list(msg = None)
        RETR msg                retr(msg)
        DELE msg                dele(msg)
        NOOP                    noop()
        RSET                    rset()
        QUIT                    quit()

Optional Commands (some servers support these):
        RPOP name               rpop(name)
        APOP name digest        apop(name, digest)
        TOP msg n               top(msg, n)
        UIDL [msg]              uidl(msg = None)

Raises one exception: 'error_proto'.

Instantiate with:
        POP3(hostname, port=110)

NB:     the POP protocol locks the mailbox from user
        authorisation until QUIT, so be sure to get in, suck
        the messages, and quit, each time you access the
        mailbox.

        POP is a line-based protocol, which means large mail
        messages consume lots of python cycles reading them
        line-by-line.

        If it's available on your mail server, use IMAP4
        instead, it doesn't suffer from the two problems
        above.
 
                                                                                                                                                                                                                     
__init__(self, host, port=110)
no doc string
_getline(self)
# Internal: return one line from the server, stripping CRLF.
# This is where all the CPU time of this module is consumed.
# Raise error_proto('-ERR EOF') if the connection is closed.
_getlongresp(self)
# Internal: get a response plus following text from the server.
_getresp(self)
# Internal: get a response from the server.
# Raise 'error_proto' if the response doesn't start with '+'.
_longcmd(self, line)
# Internal: send a command and get the response plus following text
_putcmd(self, line)
# Internal: send one command to the server (through _putline())
_putline(self, line)
no doc string
_shortcmd(self, line)
# Internal: send a command and get the response
apop(self, user, secret)
Authorisation
- only possible if server has supplied a timestamp in initial greeting.
Args:
        user    - mailbox user;
        secret  - secret shared between client and server.
NB: mailbox is locked by server from here to 'quit()'
dele(self, which)
Delete message number 'which'.
Result is 'response'.
getwelcome(self)
# These can be useful:
list(self, which=None)
Request listing, return result.
Result without a message number argument is in form
['response', ['mesg_num octets', ...]].
Result when a message number argument is given is a
single response: the "scan listing" for that message.
noop(self)
Does nothing.
One supposes the response indicates the server is alive.
pass_(self, pswd)
Send password, return response
(response includes message count, mailbox size).
NB: mailbox is locked by server from here to 'quit()'
quit(self)
Signoff: commit changes on server, unlock mailbox, close connection.
retr(self, which)
Retrieve whole message number 'which'.
Result is in form ['response', ['line', ...], octets].
rpop(self, user)
Not sure what this does.
rset(self)
Not sure what this does.
set_debuglevel(self, level)
no doc string
stat(self)
Get mailbox status.
Result is tuple of 2 ints (message count, mailbox size)
top(self, which, howmuch)
Retrieve message header of message number 'which'
and first 'howmuch' lines of message body.
Result is in form ['response', ['line', ...], octets].
uidl(self, which=None)
Return message digest (unique id) list.
If 'which', result contains unique id for that message,
otherwise result is list ['response', ['mesgnum uid', ...], octets]
user(self, user)
Send user name, return response
(should indicate password required).


 class error_proto(exceptions.Exception)
           no doc string