Browse Source

fix #4400 and minor clean-up in email req plugin

master
SomberNight 8 years ago
parent
commit
73a3d473cc
No known key found for this signature in database
GPG Key ID: B33B5F232C6271E9
  1. 13
      plugins/email_requests/qt.py

13
plugins/email_requests/qt.py

@ -61,6 +61,9 @@ class Processor(threading.Thread, PrintError):
self.imap_server = imap_server self.imap_server = imap_server
self.on_receive = callback self.on_receive = callback
self.M = None self.M = None
self.reset_connect_wait()
def reset_connect_wait(self):
self.connect_wait = 100 # ms, between failed connection attempts self.connect_wait = 100 # ms, between failed connection attempts
def poll(self): def poll(self):
@ -71,7 +74,7 @@ class Processor(threading.Thread, PrintError):
typ, data = self.M.search(None, 'ALL') typ, data = self.M.search(None, 'ALL')
for num in str(data[0], 'utf8').split(): for num in str(data[0], 'utf8').split():
typ, msg_data = self.M.fetch(num, '(RFC822)') typ, msg_data = self.M.fetch(num, '(RFC822)')
msg = email.message_from_string(str(msg_data[0][1], 'utf8')) msg = email.message_from_bytes(msg_data[0][1])
p = msg.get_payload() p = msg.get_payload()
if not msg.is_multipart(): if not msg.is_multipart():
p = [p] p = [p]
@ -88,11 +91,17 @@ class Processor(threading.Thread, PrintError):
self.M = imaplib.IMAP4_SSL(self.imap_server) self.M = imaplib.IMAP4_SSL(self.imap_server)
self.M.login(self.username, self.password) self.M.login(self.username, self.password)
except BaseException as e: except BaseException as e:
self.print_error(e) self.print_error('connecting failed: {}'.format(e))
self.connect_wait *= 2 self.connect_wait *= 2
else:
self.reset_connect_wait()
# Reconnect when host changes # Reconnect when host changes
while self.M and self.M.host == self.imap_server: while self.M and self.M.host == self.imap_server:
try:
self.poll() self.poll()
except BaseException as e:
self.print_error('polling failed: {}'.format(e))
break
time.sleep(self.polling_interval) time.sleep(self.polling_interval)
time.sleep(random.randint(0, self.connect_wait)) time.sleep(random.randint(0, self.connect_wait))

Loading…
Cancel
Save