From 1954560bde385757f541cb0310530c95d6a7fe3d Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Sat, 15 May 2021 22:30:18 +0200 Subject: db/message: make sure attachment data is always a byte sequence Encode text strings to UTF-8 and set the charset parameter accordingly. --- alot/db/message.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/alot/db/message.py b/alot/db/message.py index 62169356..a6d67dfd 100644 --- a/alot/db/message.py +++ b/alot/db/message.py @@ -140,9 +140,17 @@ class _MimeTree: cd = part.get_content_disposition() fn = part.get_filename() if cd == 'attachment' or fn is not None: - data = part.get_content() + data = part.get_content() + params = part.get_params() + + # make sure data is always a byte-sequence + if isinstance(data, str): + data = data.encode('utf-8', errors = 'replace') + params = [p for p in params if p[0] != 'charset'] + \ + [('charset', 'utf-8')] + self.attachment = Attachment(data, self.content_type, - fn, part.get_params()) + fn, params) def __str__(self): return 'MimePart(%s)' % self.content_type -- cgit v1.2.3