From 61d0891b475050861fdf5b6485915630ae993cb2 Mon Sep 17 00:00:00 2001 From: Yax <1949284+kianby@users.noreply.github.com> Date: Wed, 5 Jan 2022 20:01:56 +0100 Subject: [PATCH] fix title decoding error. unknown-8bit charset --- stacosys/core/imap.py | 2 +- tests/test_imap.py | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 tests/test_imap.py diff --git a/stacosys/core/imap.py b/stacosys/core/imap.py index 2970e15..b53da1d 100755 --- a/stacosys/core/imap.py +++ b/stacosys/core/imap.py @@ -121,7 +121,7 @@ def _email_non_ascii_to_uft8(string): # characters inside e-mail in a way that won’t confuse e-mail servers subject = "" for v, charset in email.header.decode_header(string): - if charset is None: + if charset is None or charset == 'unknown-8bit': if type(v) is bytes: v = v.decode() subject = subject + v diff --git a/tests/test_imap.py b/tests/test_imap.py new file mode 100644 index 0000000..400ecbf --- /dev/null +++ b/tests/test_imap.py @@ -0,0 +1,17 @@ +#!/usr/bin/python +# -*- coding: UTF-8 -*- + +import os +import unittest + +from stacosys.core.imap import _to_utf8, _email_non_ascii_to_uft8 +from email.header import Header + + +class ImapTestCase(unittest.TestCase): + + def test_utf8_decode(self): + h = Header(s="Chez Darty vous avez re\udcc3\udca7u un nouvel aspirateur Vacuum gratuit jl8nz", + charset="unknown-8bit") + decoded = _email_non_ascii_to_uft8(h) + self.assertEquals(decoded, "Chez Darty vous avez reçu un nouvel aspirateur Vacuum gratuit jl8nz")