diff options
-rw-r--r-- | alot/db/message.py | 31 |
1 files changed, 17 insertions, 14 deletions
diff --git a/alot/db/message.py b/alot/db/message.py index f2a298d7..74139315 100644 --- a/alot/db/message.py +++ b/alot/db/message.py @@ -386,6 +386,9 @@ class Message: _session_keys = None + _nm_from = None + "From header stored in the database" + def __init__(self, dbman, thread, msg, depth): """ :param dbman: db manager that is used for further lookups @@ -416,19 +419,8 @@ class Message: session_keys.append(value) self._session_keys = session_keys - self._tags = set(msg.tags) - - sender = self._email.get('From') - if sender is None: - sender = self._email.get('Sender') - - if sender: - self._from = sender - elif 'draft' in self._tags: - acc = settings.get_accounts()[0] - self._from = '"{}" <{}>'.format(acc.realname, str(acc.address)) - else: - self._from = '"Unknown" <>' + self._tags = set(msg.tags) + self._nm_from = msg.header('from') def __str__(self): """prettyprint the message""" @@ -502,7 +494,18 @@ class Message: :rtype: (str,str) """ - return email.utils.parseaddr(self._from) + sender = self._nm_from + if sender is None: + sender = self.headers.get('Sender') + + if not sender: + if 'draft' in self._tags: + acc = settings.get_accounts()[0] + sender = '"{}" <{}>'.format(acc.realname, str(acc.address)) + else: + sender = '"Unknown" <>' + + return email.utils.parseaddr(sender) def tags_add(self, tags): """ |