summaryrefslogtreecommitdiff
path: root/service/pixelated/adapter/mailstore/body_parser.py
diff options
context:
space:
mode:
Diffstat (limited to 'service/pixelated/adapter/mailstore/body_parser.py')
-rw-r--r--service/pixelated/adapter/mailstore/body_parser.py9
1 files changed, 8 insertions, 1 deletions
diff --git a/service/pixelated/adapter/mailstore/body_parser.py b/service/pixelated/adapter/mailstore/body_parser.py
index 2193b8e8..a6017833 100644
--- a/service/pixelated/adapter/mailstore/body_parser.py
+++ b/service/pixelated/adapter/mailstore/body_parser.py
@@ -16,6 +16,9 @@
from email.parser import Parser
import re
+import logging
+
+logger = logging.getLogger(__name__)
def _parse_charset_header(content_type_and_charset_header, default_charset='us-ascii'):
@@ -56,6 +59,10 @@ class BodyParser(object):
text += u'\n'
encoded_text = text.encode(charset)
if isinstance(self._content, unicode):
- return encoded_text + self._content.encode(charset, 'ignore')
+ try:
+ return encoded_text + self._content.encode(charset)
+ except UnicodeError, e:
+ logger.warn('Failed to encode content for charset %s. Ignoring invalid chars: %s' % (charset, e))
+ return encoded_text + self._content.encode(charset, 'ignore')
else:
return encoded_text + self._content