aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric S. Raymond <esr@thyrsus.com>2003-01-16 06:55:37 +0000
committerEric S. Raymond <esr@thyrsus.com>2003-01-16 06:55:37 +0000
commit8168008e1a6d137e08eec71a5a23fbe7d1c88041 (patch)
treeaae476fb7dc7657ddc996e6b01597dbda73cbe4b
parent38b02c836b44ae694c62b91a93fec9d5d7168281 (diff)
downloadfetchmail-8168008e1a6d137e08eec71a5a23fbe7d1c88041.tar.gz
fetchmail-8168008e1a6d137e08eec71a5a23fbe7d1c88041.tar.bz2
fetchmail-8168008e1a6d137e08eec71a5a23fbe7d1c88041.zip
Initial revision
svn path=/trunk/; revision=3786
-rw-r--r--contrib/PopDel.py103
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()