diff --git a/CHANGELOG b/CHANGELOG index 9351701e..842e7b13 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -7,6 +7,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] +Fix "Content-Transfer-Encoding" issue https://github.com/simple-login/app/issues/125 ## [3.0.0] - 2020-04-13 New endpoints to create/update aliases: diff --git a/email_handler.py b/email_handler.py index 3fba134f..c43c2162 100644 --- a/email_handler.py +++ b/email_handler.py @@ -261,24 +261,27 @@ def should_append_alias(msg: Message, address: str): return True +_MIME_HEADERS = [ + "MIME-Version", + "Content-Type", + "Content-Disposition", + "Content-Transfer-Encoding", +] +_MIME_HEADERS = [h.lower() for h in _MIME_HEADERS] + + def prepare_pgp_message(orig_msg: Message, pgp_fingerprint: str): msg = MIMEMultipart("encrypted", protocol="application/pgp-encrypted") - # copy all headers from original message except the "Content-Type" + # copy all headers from original message except all standard MIME headers for i in reversed(range(len(orig_msg._headers))): header_name = orig_msg._headers[i][0].lower() - if header_name != "Content-Type".lower(): + if header_name.lower() not in _MIME_HEADERS: msg[header_name] = orig_msg._headers[i][1] # Delete unnecessary headers in orig_msg except to save space delete_all_headers_except( - orig_msg, - [ - "MIME-Version", - "Content-Type", - "Content-Disposition", - "Content-Transfer-Encoding", - ], + orig_msg, _MIME_HEADERS, ) first = MIMEApplication(