#!/home/tgolden/bin/python import os, sys import email import datetime import imapclient import operator hostname = "scandium.sabren.com" username = "tgolden" password = "T0adst00l" def main (): server = imapclient.IMAPClient (hostname, use_uid=True, ssl=True) server.login (username, password) try: root = "mail/Bayes" for folder in ['to-spam', 'to-ham']: folder_path = "%s/%s" % (root, folder) print "Accessing", folder_path server.select_folder (folder_path) try: deleted = server.delete_messages (server.search ()) print len (deleted), "messages deleted" finally: server.close_folder () server.select_folder ("%s/spam" % root) try: field = "RFC822" threshold_past = datetime.datetime.utcnow () + datetime.timedelta (seconds=-(60 * 30)) threshold_future = datetime.datetime.utcnow () + datetime.timedelta (seconds=(60 * 5)) print "Removing records outside", threshold_past, "-", threshold_future to_be_deleted = [] for uid in server.search (): try: data = server.fetch ([uid], [field]).get (uid) except: data = None if not data: continue message = email.message_from_string (data[field]) message_date = email.utils.parsedate_tz (message['date']) if message_date is None: message_date_utc = threshold_past else: try: message_date_utc = datetime.datetime (*message_date[:6]) - datetime.timedelta (seconds=message_date[-1] or 0) except ValueError: message_date_utc = threshold_past if not threshold_past <= message_date_utc <= threshold_future: print "Deleting message", uid, "with UTC date", message_date_utc to_be_deleted.append (uid) server.delete_messages (to_be_deleted) print "Deleted" finally: server.close_folder () finally: server.logout () if __name__ == '__main__': main ()