From a5214b42aee2ab9f18ac0c393a48f6c582cb2964 Mon Sep 17 00:00:00 2001 From: Antoine Nguyen Date: Mon, 23 Feb 2026 15:28:43 +0100 Subject: [PATCH] Compatibility fix for chardet 6.x --- modoboa/amavis/utils.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/modoboa/amavis/utils.py b/modoboa/amavis/utils.py index d829eb02d..c3a210418 100644 --- a/modoboa/amavis/utils.py +++ b/modoboa/amavis/utils.py @@ -37,7 +37,7 @@ def smart_str(value, *args, **kwargs): return django_smart_str(value, *args, **kwargs) -def fix_utf8_encoding(value): +def fix_utf8_encoding(value: str) -> str: """Fix utf-8 strings that contain utf-8 escaped characters. msgs.from_addr and msgs.subject potentialy contain badly escaped utf-8 @@ -58,12 +58,13 @@ def fix_utf8_encoding(value): value = bytes_value.decode("utf-8") except UnicodeDecodeError: encoding = chardet.detect(bytes_value) - try: - value = bytes_value.decode(encoding["encoding"], "replace") - except (TypeError, UnicodeDecodeError): - # ??? use the original value, we've done our best to try and - # convert it to a clean utf-8 string. - pass + if encoding["confidence"] > 50.0: + try: + value = bytes_value.decode(encoding["encoding"], "replace") + except (TypeError, UnicodeDecodeError): + # ??? use the original value, we've done our best to try and + # convert it to a clean utf-8 string. + pass return value