diff --git a/maildump/web.py b/maildump/web.py index df490d9..8c999ee 100644 --- a/maildump/web.py +++ b/maildump/web.py @@ -99,10 +99,11 @@ def _part_url(part): def _part_response(part, body=None, charset=None): charset = charset or part['charset'] or 'utf-8' + if body is None: + body = part['body'] if charset != 'utf-8': - part = dict(part) - part['body'] = part['body'].decode(charset).encode('utf-8') - io = StringIO(part['body'] if body is None else body) + body = body.decode(charset).encode('utf-8') + io = StringIO(body) io.seek(0) response = send_file(io, part['type'], part['is_attachment'], part['filename']) response.charset = charset @@ -159,10 +160,7 @@ def get_message_html(message_id): if not part: return 404, 'part does not exist' charset = part['charset'] or 'utf-8' - if charset != 'utf-8': - part = dict(part) - part['body'] = part['body'].decode(charset).encode('utf-8') - soup = bs4.BeautifulSoup(part['body'].decode('utf-8'), 'html5lib') + soup = bs4.BeautifulSoup(part['body'].decode(charset), 'html5lib') _fix_cid_links(soup, message_id) return _part_response(part, str(soup), 'utf-8')