summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--alot/db/message.py31
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):
"""