From 7c861be75335f9542e847272aa8a4c9d4f0f079b Mon Sep 17 00:00:00 2001 From: rixx Date: Sun, 15 Mar 2015 01:26:38 +0100 Subject: IMAP module may now check several IMAP folders Returns sum of unseen mails in given folders. Former behaviour with only one given directory is unchanged. --- py3status/modules/imap.py | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) (limited to 'py3status/modules/imap.py') diff --git a/py3status/modules/imap.py b/py3status/modules/imap.py index d7ce5be..9228a28 100644 --- a/py3status/modules/imap.py +++ b/py3status/modules/imap.py @@ -1,7 +1,8 @@ # -*- coding: utf8 -*- """ Module displaying the number of unread messages -on an IMAP inbox (configurable). +on an IMAP inbox (configurable, may also be a +comma-separated list of IMAP folders). @author obb """ @@ -42,13 +43,19 @@ class Py3status: def _get_mail_count(self): try: - connection = imaplib.IMAP4_SSL(self.imap_server, self.port) - connection.login(self.user, self.password) - connection.select(self.mailbox) - unseen_response = connection.search(None, self.criterion) - mails = unseen_response[1][0].split() - mail_count = len(mails) + mail_count = 0 + directories = self.mailbox.split(',') + + for directory in directories: + connection = imaplib.IMAP4_SSL(self.imap_server, self.port) + connection.login(self.user, self.password) + connection.select(directory) + unseen_response = connection.search(None, self.criterion) + connection.close() + mails = unseen_response[1][0].split() + mail_count += len(mails) return mail_count + except: return 'N/A' -- cgit v1.3 From ca157d598dc5e9aa8ab4679ad7619b4b1ee832f5 Mon Sep 17 00:00:00 2001 From: rixx Date: Sun, 15 Mar 2015 23:56:49 +0100 Subject: resource saving as proposed by @ultrabug --- py3status/modules/imap.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'py3status/modules/imap.py') diff --git a/py3status/modules/imap.py b/py3status/modules/imap.py index 9228a28..5743cee 100644 --- a/py3status/modules/imap.py +++ b/py3status/modules/imap.py @@ -45,10 +45,10 @@ class Py3status: try: mail_count = 0 directories = self.mailbox.split(',') + connection = imaplib.IMAP4_SSL(self.imap_server, self.port) + connection.login(self.user, self.password) for directory in directories: - connection = imaplib.IMAP4_SSL(self.imap_server, self.port) - connection.login(self.user, self.password) connection.select(directory) unseen_response = connection.search(None, self.criterion) connection.close() -- cgit v1.3 From d8bf36f2aa8a190b63f0934bb9ef7039ac5be545 Mon Sep 17 00:00:00 2001 From: rixx Date: Mon, 16 Mar 2015 09:35:58 +0100 Subject: less being stupid funnily enough, it worked with the connection.close in the loop, too --- py3status/modules/imap.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'py3status/modules/imap.py') diff --git a/py3status/modules/imap.py b/py3status/modules/imap.py index 5743cee..f76f7f9 100644 --- a/py3status/modules/imap.py +++ b/py3status/modules/imap.py @@ -51,9 +51,10 @@ class Py3status: for directory in directories: connection.select(directory) unseen_response = connection.search(None, self.criterion) - connection.close() mails = unseen_response[1][0].split() mail_count += len(mails) + + connection.close() return mail_count except: -- cgit v1.3