diff options
author | Eric S. Raymond <esr@thyrsus.com> | 2003-01-16 06:55:37 +0000 |
---|---|---|
committer | Eric S. Raymond <esr@thyrsus.com> | 2003-01-16 06:55:37 +0000 |
commit | 8168008e1a6d137e08eec71a5a23fbe7d1c88041 (patch) | |
tree | aae476fb7dc7657ddc996e6b01597dbda73cbe4b | |
parent | 38b02c836b44ae694c62b91a93fec9d5d7168281 (diff) | |
download | fetchmail-8168008e1a6d137e08eec71a5a23fbe7d1c88041.tar.gz fetchmail-8168008e1a6d137e08eec71a5a23fbe7d1c88041.tar.bz2 fetchmail-8168008e1a6d137e08eec71a5a23fbe7d1c88041.zip |
Initial revision
svn path=/trunk/; revision=3786
-rw-r--r-- | contrib/PopDel.py | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/contrib/PopDel.py b/contrib/PopDel.py new file mode 100644 index 00000000..b879f6fd --- /dev/null +++ b/contrib/PopDel.py @@ -0,0 +1,103 @@ +# PopDel.py Copyright Richard Harris 2002 +# +# author: Richard Harris (rover@emptydog.com) +# The author releases this file under the GPL +# license. See COPYING for specifics. +# +# See PopDel.manual for the use of this Python class. +# +# created: 01 May 02 +# change log: +# +import os, poplib, string, sys + +class PopDel: + HDR = "\nPopDel - Delete messages from popmail - Ver. 0.1" + BYE = "\n PopDel Ver.0.1 by Richard Harris\n" +\ + " site - http://emptydog.com\n" +\ + " email - rover@emptydog.com\n" + PROMPT1 = "Choose message number to delete or 'q' to quit: " + PROMPT2 = "Quit or abort: " + CHOICES = ["Save changes and quit.", + "Abort and make no deletions."] + + def __init__(self): + self.done = 0 + return + + # get user to choose an element from thing + def query(self, thing, prompt): + length = len(thing) + choice = length + for i in range(0, length): + print '(' + `i + 1` + ') ' + thing[i] + while (choice >= length): + choice = raw_input(prompt) + if (choice == 'q'): + self.done = 1 + choice = -1 + else: + try: + choice = int(choice) - 1 + except: + choice = 666 + return choice + + def run(self): + #log in + os.system('clear') + print self.HDR + + try: + subjects = [] + + M = poplib.POP3(sys.argv[1]) + M.user(sys.argv[2]) + M.pass_(sys.argv[3]) + + messages = M.list() + + list = messages[1] + if (len(list) == 0): + M.quit() + print '\nNo messages on server.' + else: + for entry in list: + tokens = string.split(entry) + head = M.top(int(tokens[0]), 32) + for line in head[1]: + if (string.find(line, 'Subject:') == 0): + subject = string.replace(line, 'Subject:','') + subject = subject + ' - ' + tokens[1] + ' octets' + subjects.append(subject) + break + + while not self.done: + os.system('clear') + print self.HDR + print '\nMessages on server:' + msg = self.query(subjects, self.PROMPT1) + if (msg > -1): + M.dele( msg + 1) + subjects[msg] = subjects[msg] + ' -X-' + + print '\nExit Options:' + choice = self.query(self.CHOICES, self.PROMPT2) + if (choice == 0): # commit changes and quit + M.quit() + else: # reset and quit + M.rset() + M.quit() + + except: # if blows-up then quit gracefully + print "Error: terminating on exception." + M.rset() + M.quit() + + print self.BYE + return + + +#-----------------main +obj = PopDel() +obj.run() |