浏览代码

Fix "Content-Transfer-Encoding" issue when encrypting emails

Son NK 5 年之前
父节点
当前提交
703d9385b5
共有 2 个文件被更改,包括 13 次插入9 次删除
  1. 1 0
      CHANGELOG
  2. 12 9
      email_handler.py

+ 1 - 0
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:

+ 12 - 9
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(