2
from email.Parser import HeaderParser
4
class ImapBoxConnectionError(Exception): pass
5
class ImapBoxAuthError(Exception): pass
8
def __init__(self, user, password,
9
host, port = 143, ssl = False,
10
use_default_mbox = True,
13
self.password = password
17
self.use_default_mbox = use_default_mbox
18
self.mbox_dir = mbox_dir
23
print "connecting to the imap server ..."
26
self.mbox = imaplib.IMAP4(self.host, self.port)
28
self.mbox = imaplib.IMAP4_SSL(self.host, self.port)
30
raise ImapBoxConnectionError()
31
print "... connection done"
33
print "authenticate user ..."
35
self.mbox.login(self.user, self.password)
37
raise ImapBoxAuthError()
44
except ImapBoxConnectionError:
45
raise ImapBoxConnectionError()
46
except ImapBoxAuthError:
47
raise ImapBoxAuthError()
49
print "getting mails..."
53
if self.use_default_mbox:
54
result, message = self.mbox.select(readonly=1)
56
result, message = self.mbox.select(self.mbox_dir, readonly=1)
58
raise Exception, message
60
# retrieve only unseen messages
61
typ, data = self.mbox.search(None, 'UNSEEN')
62
for num in data[0].split():
63
# fetch only needed fields
64
f = self.mbox.fetch(num, '(BODY[HEADER.FIELDS (SUBJECT FROM MESSAGE-ID)])')
66
m = hp.parsestr(f[1][0][1])
69
sub = sub.replace("<", "<").replace(">", ">")
70
sub = sub.replace("&", "&")
71
fr = fr.replace("<", "<").replace(">", ">")
72
fr.replace("&", "&")
73
mails.append([sub, fr, m['Message-ID']])
82
if __name__ == "__main__":
83
#i = ImapBox("", "", "")
84
i = ImapBox("", "", "")