#!/usr/bin/env python from imaplib import IMAP4 import logging; logging.basicConfig(filename="/tmp/y.log") from email import message_from_string log = logging.getLogger("") USER = "duffy" PASSWORD = "duck" SERVER = "looney.tunes.org" def fetch_message(mailbox, message_id, delete=1): status, message = mailbox.fetch(message_id, "(RFC822)") if status != "OK": return None email = message_from_string(message[0][1]) if delete: mailbox.store(message_id, 'FLAGS', '(\Deleted)') return email def get_new_messages(mailbox): _, data = mailbox.search(None, "ALL") return data[0].split() def process_message(message): return "A message" def one_pass(): print "ONE PASS" try: mailbox = connect() except Exception, e: log.error("error connecting: %s" % e) return id_list = get_new_messages(mailbox) for message_id in id_list: message = fetch_message(mailbox, message_id) if not message: continue try: article = process_message(message) #yield article except Exception, e: log.error("error processing message: %s" % e) mailbox.expunge() def connect(): mailbox = IMAP4(SERVER) mailbox.login(USER, PASSWORD) mailbox.select() return mailbox def main(argv=None): if argv is None: import sys argv = sys.argv from optparse import OptionParser parser = OptionParser("usage: %prog [options]") opts, args = parser.parse_args(argv[1:]) if len(args) != 0: parser.error("wrong number of arguments") # Will exit one_pass() if __name__ == "__main__": main()