Jeremy White : gitlab: Handle email encoded in a non utf-8 charset.

Alexandre Julliard julliard at winehq.org
Mon Jun 6 15:05:08 CDT 2022


Module: tools
Branch: master
Commit: 001ed5565377ccde1ecbbce75806a0a65bd31348
URL:    https://source.winehq.org/git/tools.git/?a=commit;h=001ed5565377ccde1ecbbce75806a0a65bd31348

Author: Jeremy White <jwhite at codeweavers.com>
Date:   Fri Jun  3 10:16:47 2022 -0500

gitlab: Handle email encoded in a non utf-8 charset.

See https://www.winehq.org/pipermail/wine-devel/2022-June/218864.html.

---

 gitlab/gitlab-to-mail/mailtogitlab.py | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/gitlab/gitlab-to-mail/mailtogitlab.py b/gitlab/gitlab-to-mail/mailtogitlab.py
index ecc73fc..bc9944a 100755
--- a/gitlab/gitlab-to-mail/mailtogitlab.py
+++ b/gitlab/gitlab-to-mail/mailtogitlab.py
@@ -53,6 +53,7 @@ def find_mr(mail):
 
 
 def get_email_body(mail):
+    charset = mail.get_content_charset(failobj='UTF-8')
     if mail.is_multipart():
         result = ""
         for part in mail.walk():
@@ -60,14 +61,14 @@ def get_email_body(mail):
                 payload = part.get_payload(decode=True)
                 # Skip things that look like a mailman tail
                 if not re.search(r"^--[ ]*[\r\n]*.*mailing list[ \r\n]*.*[\r\n]^https", payload.decode(), re.MULTILINE):
-                    result += payload.decode()
+                    result += payload.decode(encoding=charset)
         return result
     else:
         if mail.get_content_type() != "text/plain":
             return ""
 
         payload = mail.get_payload(decode=True)
-        return payload.decode()
+        return payload.decode(encoding=charset)
 
 def escape_body(body):
     return body.replace("```", '\`\`\`')




More information about the wine-cvs mailing list