Sorry to repost... but 4am didn't get much responses. I've been trying to implement this script, it polls an IMAP inbox for unread messages and displays the sender and subject in a scrollable window using Tkinter. However, when I try to change the search parameters on line 55 from 'unread' (UNSEEN) to 'read' (SEEN), the tkinter window doesn't even pop up anymore.
Any idea how to change the parameters of this program and yet still keep it functional? my code: (if you can't see line 55, search for 'UNSEEN') #!/usr/bin/env python import imaplib, string, sys, os, re, rfc822 from Tkinter import * PollInterval = 60 # seconds def getimapaccount(): try: f = open(('info.imap')) except IOError, e: print 'Unable to open ~/.imap: ', e sys.exit(1) global imap_server, imap_user, imap_password try: imap_server, imap_user, imap_password = string.split(f.readline()) except ValueError: print 'Invalid data in ~/.imap' sys.exit(1) f.close() class msg: # a file-like object for passing a string to rfc822.Message def __init__(self, text): self.lines = string.split(text, '\015\012') self.lines.reverse() def readline(self): try: return self.lines.pop() + '\n' except: return '' class Mailwatcher(Frame): def __init__(self, master=None): Frame.__init__(self, master) self.pack(side=TOP, expand=YES, fill=BOTH) self.scroll = Scrollbar(self) self.list = Listbox(self, font='7x13', yscrollcommand=self.scroll.set, setgrid=1, height=6, width=80) self.scroll.configure(command=self.list.yview) self.scroll.pack(side=LEFT, fill=BOTH) self.list.pack(side=LEFT, expand=YES, fill=BOTH) def getmail(self): self.after(1000*PollInterval, self.getmail) self.list.delete(0,END) try: M = imaplib.IMAP4(imap_server) M.login(imap_user, imap_password) except Exception, e: self.list.insert(END, 'IMAP login error: ', e) return try: result, message = M.select(readonly=1) if result != 'OK': raise Exception, message typ, data = M.search(None, '(UNSEEN)') for num in string.split(data[0]): try: f = M.fetch(num, '(BODY[HEADER.FIELDS (SUBJECT FROM)])') m = rfc822.Message(msg(f[1][0][1]), 0) subject = m['subject'] except KeyError: f = M.fetch(num, '(BODY[HEADER.FIELDS (FROM)])') m = rfc822.Message(msg(f[1][0][1]), 0) subject = '(no subject)' fromaddr = m.getaddr('from') if fromaddr[0] == "": n = fromaddr[1] else: n = fromaddr[0] text = '%-20.20s %s' % (n, subject) self.list.insert(END, text) len = self.list.size() if len > 0: self.list.see(len-1) except Exception, e: self.list.delete(0,END) print sys.exc_info() self.list.insert(END, 'IMAP read error: ', e) M.logout() getimapaccount() root = Tk(className='mailwatcher') root.title('mailwatcher') mw = Mailwatcher(root) mw.getmail() mw.mainloop() -- http://mail.python.org/mailman/listinfo/python-list