summaryrefslogtreecommitdiff
path: root/service/pixelated
diff options
context:
space:
mode:
authorFolker Bernitt <fbernitt@thoughtworks.com>2015-03-20 13:45:29 +0100
committerFolker Bernitt <fbernitt@thoughtworks.com>2015-03-20 13:45:29 +0100
commitd43abfceecee6051f6c29c48e64a073455356cb5 (patch)
treec507ca77756772542dc5b8c1ea8b4ed142753c08 /service/pixelated
parente500877b7de0fa1f249887e7afe089f560094893 (diff)
Added support for encoded To, Cc and Bcc headers.
- Issue #248
Diffstat (limited to 'service/pixelated')
-rw-r--r--service/pixelated/adapter/model/mail.py10
-rw-r--r--service/pixelated/adapter/search/__init__.py7
2 files changed, 11 insertions, 6 deletions
diff --git a/service/pixelated/adapter/model/mail.py b/service/pixelated/adapter/model/mail.py
index c0fdcab6..f23c2708 100644
--- a/service/pixelated/adapter/model/mail.py
+++ b/service/pixelated/adapter/model/mail.py
@@ -282,7 +282,7 @@ class PixelatedMail(Mail):
hdoc_headers = self.hdoc.content['headers']
for header in ['To', 'Cc', 'Bcc']:
- header_value = hdoc_headers.get(header)
+ header_value = self._decode_header(hdoc_headers.get(header))
if not header_value:
continue
_headers[header] = header_value if type(header_value) is list else header_value.split(',')
@@ -304,8 +304,12 @@ class PixelatedMail(Mail):
return _headers
def _decode_header(self, header):
- arr_header = decode_header(header)
- return arr_header[0][0]
+ if not header:
+ return None
+ if isinstance(header, list):
+ return [decode_header(entry)[0][0] for entry in header]
+ else:
+ return decode_header(header)[0][0]
def _get_date(self):
date = self.hdoc.content.get('date', None)
diff --git a/service/pixelated/adapter/search/__init__.py b/service/pixelated/adapter/search/__init__.py
index 331ea8fe..dcdade11 100644
--- a/service/pixelated/adapter/search/__init__.py
+++ b/service/pixelated/adapter/search/__init__.py
@@ -127,13 +127,14 @@ class SearchEngine(object):
tags = mdict.get('tags', [])
tags.append(mail.mailbox_name.lower())
bounced = mail.bounced if mail.bounced else ['']
+
index_data = {
'sender': unicode(header.get('from', '').decode('utf-8')),
'subject': unicode(header.get('subject', '').decode('utf-8')),
'date': milliseconds(header.get('date', '')),
- 'to': u','.join(header.get('to', [''])),
- 'cc': u','.join(header.get('cc', [''])),
- 'bcc': u','.join(header.get('bcc', [''])),
+ 'to': u','.join([h.decode('utf-8') for h in header.get('to', [''])]),
+ 'cc': u','.join([h.decode('utf-8') for h in header.get('cc', [''])]),
+ 'bcc': u','.join([h.decode('utf-8') for h in header.get('bcc', [''])]),
'tag': u','.join(unique(tags)),
'bounced': u','.join(bounced),
'body': unicode(mdict['textPlainBody']),