diff --git a/app/src/main/java/eu/faircode/email/FragmentCompose.java b/app/src/main/java/eu/faircode/email/FragmentCompose.java index 01cb4e3451..3daa052795 100644 --- a/app/src/main/java/eu/faircode/email/FragmentCompose.java +++ b/app/src/main/java/eu/faircode/email/FragmentCompose.java @@ -5506,9 +5506,9 @@ public class FragmentCompose extends FragmentBase { // Get data InternetAddress[] afrom = (identity == null ? null : new InternetAddress[]{new InternetAddress(identity.email, identity.name, StandardCharsets.UTF_8.name())}); - InternetAddress[] ato = MessageHelper.parseAddresses(context, to); - InternetAddress[] acc = MessageHelper.parseAddresses(context, cc); - InternetAddress[] abcc = MessageHelper.parseAddresses(context, bcc); + InternetAddress[] ato = MessageHelper.dedup(MessageHelper.parseAddresses(context, to)); + InternetAddress[] acc = MessageHelper.dedup(MessageHelper.parseAddresses(context, cc)); + InternetAddress[] abcc = MessageHelper.dedup(MessageHelper.parseAddresses(context, bcc)); // Safe guard if (action == R.id.action_send) { diff --git a/app/src/main/java/eu/faircode/email/MessageHelper.java b/app/src/main/java/eu/faircode/email/MessageHelper.java index 5c08f26113..77e62a0019 100644 --- a/app/src/main/java/eu/faircode/email/MessageHelper.java +++ b/app/src/main/java/eu/faircode/email/MessageHelper.java @@ -3175,6 +3175,23 @@ public class MessageHelper { return addresses; } + static InternetAddress[] dedup(InternetAddress[] addresses) { + if (addresses == null) + return null; + + List emails = new ArrayList<>(); + List
result = new ArrayList<>(); + for (InternetAddress address : addresses) { + String email = address.getAddress(); + if (!emails.contains(email)) { + emails.add(email); + result.add(address); + } + } + + return result.toArray(new InternetAddress[0]); + } + static boolean isRemoved(Throwable ex) { while (ex != null) { if (ex instanceof MessageRemovedException ||