diff --git a/app/src/main/java/eu/faircode/email/MessageHelper.java b/app/src/main/java/eu/faircode/email/MessageHelper.java index 8520b1bf0c..e170c84adf 100644 --- a/app/src/main/java/eu/faircode/email/MessageHelper.java +++ b/app/src/main/java/eu/faircode/email/MessageHelper.java @@ -925,7 +925,7 @@ public class MessageHelper { // https://en.wikipedia.org/wiki/International_email for (Address address : addresses) { String email = ((InternetAddress) address).getAddress(); - email = toPunyCode(email, false); + email = toPunyCode(email, false, identity != null && identity.unicode); ((InternetAddress) address).setAddress(email); } return addresses; @@ -2854,7 +2854,7 @@ public class MessageHelper { if (email != null) { email = decodeMime(email); email = fromPunyCode(email); - email = toPunyCode(email, true); + email = toPunyCode(email, true, false); iaddress.setAddress(email); } @@ -3643,7 +3643,7 @@ public class MessageHelper { return email; } - static String toPunyCode(String email, boolean single) { + static String toPunyCode(String email, boolean single, boolean unicode) { int at = email.indexOf('@'); if (at > 0) { String user = email.substring(0, at); @@ -3654,11 +3654,12 @@ public class MessageHelper { TextHelper.isSingleScript(domain)) return email; - try { - user = IDN.toASCII(user, IDN.ALLOW_UNASSIGNED); - } catch (Throwable ex) { - Log.i(ex); - } + if (!unicode) + try { + user = IDN.toASCII(user, IDN.ALLOW_UNASSIGNED); + } catch (Throwable ex) { + Log.i(ex); + } String[] parts = domain.split("\\."); for (int p = 0; p < parts.length; p++)