Minor fixes
[rox-postal.git] / pop_check.py
blob25ddcc6e41b436e37761ee7040c671b56d951e25
1 """
2 imap_check.py - An imap folder checker
4 Copyright 2006 Kenneth Hayber <ken@hayber.us>,
5 All rights reserved.
6 """
8 import poplib, sys
10 from checker import Checker
11 class POPChecker(Checker):
12 def __init__(self, config):
13 Checker.__init__(self, config)
14 self.server = config['server']
15 self.port = int(config['port'])
16 self.username = config['username']
17 self.password = config['password']
18 self.ssl = (config['ssl'] == 'True')
19 self.apop = (config['apop'] == 'True')
21 self.uidls = [] # list of uidls from last check
22 # save this to a file to prevent all messages being 'new' at startup
24 def check(self):
25 self.unseen = 0
27 try:
28 if self.ssl:
29 pop = poplib.POP3_SSL(self.server)
30 else:
31 pop = poplib.POP3(self.server)
33 if self.apop:
34 pop.apop(self.username, self.password)
35 else:
36 pop.user(self.username)
37 pop.pass_(self.password)
38 except:
39 self.results = "%s (%s)\n" % (self.name, _('Login Error'))
40 self.blocker.trigger()
41 return
43 # get list of unique message ids
44 m = pop.uidl()
45 pop.quit()
46 yield None
48 # remove the unneeded parts from the uidl results (just want the uidls)
49 uidls = map(lambda a: a.split()[1], m[1])
50 yield None
52 # find the new (unseen) uidls
53 for x in uidls:
54 if not x in self.uidls:
55 self.unseen += 1
56 yield None
58 if self.unseen > 0:
59 self.results = "%s (%d/%d)\n" % (self.name, self.unseen, len(uidls))
60 else:
61 self.results = ""
63 self.uidls = uidls
64 self.blocker.trigger()