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)