From 214adfb9ba14f02236debf9715abc02376376eef Mon Sep 17 00:00:00 2001 From: Patrick Ulbrich Date: Mon, 5 Aug 2013 19:28:32 +0200 Subject: [PATCH] mail sender related changes removed sender_format from config store both, sender name and address in mail objects mailcollector: removed error messages from subject and sender strings user script plugin: fixed script arg --- Mailnag/common/config.py | 1 - Mailnag/daemon/mails.py | 19 ++++++------------- Mailnag/plugins/dbusplugin.py | 5 ++++- Mailnag/plugins/libnotifyplugin.py | 12 +++++++++--- Mailnag/plugins/spamfilterplugin.py | 4 +++- Mailnag/plugins/userscriptplugin.py | 6 ++++-- 6 files changed, 26 insertions(+), 21 deletions(-) diff --git a/Mailnag/common/config.py b/Mailnag/common/config.py index c330f00..7486a85 100644 --- a/Mailnag/common/config.py +++ b/Mailnag/common/config.py @@ -30,7 +30,6 @@ mailnag_defaults = { 'core': { 'check_interval' : '10', - 'sender_format' : '1', 'autostart' : '1', 'enabled_plugins' : 'dbusplugin, soundplugin' } diff --git a/Mailnag/daemon/mails.py b/Mailnag/daemon/mails.py index edae237..5d02c43 100644 --- a/Mailnag/daemon/mails.py +++ b/Mailnag/daemon/mails.py @@ -109,7 +109,7 @@ class MailCollector: sender = self._format_header('sender', msg['from']) except: print "Could not get sender from IMAP message." # debug - sender = "Error in sender" + sender = ('', '') try: try: # get date and format it @@ -139,7 +139,7 @@ class MailCollector: if id == None or id == '': # create fallback id - id = str(hash(acc.server + acc.user + sender + subject)) + id = str(hash(acc.server + acc.user + sender[1] + subject)) # prevent duplicates caused by Gmail labels if id not in mail_ids: @@ -180,7 +180,7 @@ class MailCollector: sender = self._format_header('sender', msg['from']) except: print "Could not get sender from POP message." # debug - sender = "Error in sender" + sender = ('', '') try: try: # get date and format it @@ -211,7 +211,7 @@ class MailCollector: if uidl == None or uidl == '': # create fallback id - id = str(hash(acc.server + acc.user + sender + subject)) + id = str(hash(acc.server + acc.user + sender[1] + subject)) else: # create unique id id = acc.user + uidl.split(' ')[2] @@ -242,14 +242,7 @@ class MailCollector: # create decoded tupel sender = (sender_real, sender_addr) except: - sender = ('','Error: cannot format sender') - - sender_format = self._cfg.get('core', 'sender_format') - if sender_format == '1' and sender[0] != '': - # real sender name if not empty - sender = sender_real - else: - sender = sender_addr + sender = ('', '') return sender if field == 'date': @@ -268,7 +261,7 @@ class MailCollector: try: subject = self._convert(content) except: - subject = 'Error: cannot format subject' + subject = '' return subject diff --git a/Mailnag/plugins/dbusplugin.py b/Mailnag/plugins/dbusplugin.py index f105a43..02d7612 100644 --- a/Mailnag/plugins/dbusplugin.py +++ b/Mailnag/plugins/dbusplugin.py @@ -129,9 +129,12 @@ class DBusService(dbus.service.Object): mails = [] for m in self._mails: d = {} + name, addr = m.sender + d['datetime'] = m.datetime # int32 (i) d['subject'] = m.subject # string (s) - d['sender'] = m.sender # string (s) + d['sender_name'] = name # string (s) + d['sender_addr'] = addr # string (s) d['id'] = m.id # string (s) mails.append(d) diff --git a/Mailnag/plugins/libnotifyplugin.py b/Mailnag/plugins/libnotifyplugin.py index 62fd40d..0ac4218 100644 --- a/Mailnag/plugins/libnotifyplugin.py +++ b/Mailnag/plugins/libnotifyplugin.py @@ -200,7 +200,7 @@ class LibNotifyPlugin(Plugin): ubound = len(mails) if len(mails) <= self.MAIL_LIST_LIMIT else self.MAIL_LIST_LIMIT for i in range(ubound): - body += mails[i].sender + ":\n" + mails[i].subject + "\n\n" + body += self._get_sender(mails[i].sender) + ":\n" + mails[i].subject + "\n\n" if len(mails) > self.MAIL_LIST_LIMIT: body += "" + _("(and {0} more)").format(str(len(mails) - self.MAIL_LIST_LIMIT)) + "" @@ -220,7 +220,7 @@ class LibNotifyPlugin(Plugin): mails = sort_mails(mails, sort_desc = False) for mail in mails: - n = self._get_notification(mail.sender, mail.subject, "mail-unread") + n = self._get_notification(self._get_sender(mail.sender), mail.subject, "mail-unread") notification_id = str(id(n)) # n.add_action("mark-as-read", _("Mark as read"), self._notification_action_handler, (mail, notification_id), None) n.show() @@ -275,7 +275,13 @@ class LibNotifyPlugin(Plugin): # so clear the reference array as well. self._notifications = {} - + + def _get_sender(self, mail): + name, addr = mail.sender + if len(name) > 0: return name + else: return addr + + def get_default_mail_reader(): mail_reader = None app_info = Gio.AppInfo.get_default_for_type ("x-scheme-handler/mailto", False) diff --git a/Mailnag/plugins/spamfilterplugin.py b/Mailnag/plugins/spamfilterplugin.py index ab6556c..ab94751 100644 --- a/Mailnag/plugins/spamfilterplugin.py +++ b/Mailnag/plugins/spamfilterplugin.py @@ -133,7 +133,9 @@ class SpamfilterPlugin(Plugin): continue f = f.lower() - if (f in mail.sender.lower()) or (f in mail.subject.lower()): + sender_name, sender_addr = mail.sender + if (f in sender_name.lower()) or (f in sender_addr.lower()) \ + or (f in mail.subject.lower()): # sender or subject contains filter string is_filtered = True break diff --git a/Mailnag/plugins/userscriptplugin.py b/Mailnag/plugins/userscriptplugin.py index 313c86e..84fad07 100644 --- a/Mailnag/plugins/userscriptplugin.py +++ b/Mailnag/plugins/userscriptplugin.py @@ -78,7 +78,7 @@ class UserscriptPlugin(Plugin): box.set_orientation(Gtk.Orientation.VERTICAL) #box.set_size_request(100, -1) - markup_str = "\"<%s> <%s>\"" % (_('sender'), _('subject')) + markup_str = "<%s> <%s>" % (_('sender'), _('subject')) desc = _( "The following script will be executed whenever new mails arrive.\n" "Mailnag passes the total count of new mails to this script,\n" "followed by %s pairs." % markup_str) @@ -119,7 +119,9 @@ class UserscriptPlugin(Plugin): script_data_mailcount = 0 for m in new_mails: - script_data += ' "<%s> %s"' % (m.sender, m.subject) + sender_name, sender_addr = m.sender + if len(sender_addr) == 0: sender_addr = 'UNKNOWN_SENDER' + script_data += ' %s "%s"' % (sender_addr, m.subject) script_data_mailcount += 1 script_data = str(script_data_mailcount) + script_data start_subprocess('%s %s' % (script_file, script_data), shell = True)