From 5a8ecd2dc56d8ebbf699e0a1c4066d98528dc44b Mon Sep 17 00:00:00 2001 From: M66B Date: Mon, 2 Dec 2024 16:11:27 +0100 Subject: [PATCH] Skip punycode for single scripts --- .../main/java/eu/faircode/email/MessageHelper.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/MessageHelper.java b/app/src/main/java/eu/faircode/email/MessageHelper.java index 3512d78af9..1bbcd95c0b 100644 --- a/app/src/main/java/eu/faircode/email/MessageHelper.java +++ b/app/src/main/java/eu/faircode/email/MessageHelper.java @@ -907,7 +907,7 @@ public class MessageHelper { // https://en.wikipedia.org/wiki/International_email for (Address address : addresses) { String email = ((InternetAddress) address).getAddress(); - email = punyCode(email); + email = punyCode(email, false); ((InternetAddress) address).setAddress(email); } return addresses; @@ -2817,7 +2817,7 @@ public class MessageHelper { if (email != null) { email = decodeMime(email); - email = punyCode(email); + email = punyCode(email, true); iaddress.setAddress(email); } @@ -3569,12 +3569,17 @@ public class MessageHelper { return TextUtils.join(compose ? ", " : "; ", formatted); } - static String punyCode(String email) { + static String punyCode(String email, boolean single) { int at = email.indexOf('@'); if (at > 0) { String user = email.substring(0, at); String domain = email.substring(at + 1); + if (single && + TextHelper.isSingleScript(user) && + TextHelper.isSingleScript(domain)) + return email; + try { user = IDN.toASCII(user, IDN.ALLOW_UNASSIGNED); } catch (Throwable ex) {