From 84102e4f53e9feeec8317c49d469fc126bab1288 Mon Sep 17 00:00:00 2001 From: M66B Date: Sat, 19 Oct 2019 14:19:02 +0200 Subject: [PATCH] Skip adding auto BCC if recipient with same address --- .../java/eu/faircode/email/MessageHelper.java | 27 ++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/eu/faircode/email/MessageHelper.java b/app/src/main/java/eu/faircode/email/MessageHelper.java index 02777caf3e..092d401229 100644 --- a/app/src/main/java/eu/faircode/email/MessageHelper.java +++ b/app/src/main/java/eu/faircode/email/MessageHelper.java @@ -179,10 +179,25 @@ public class MessageHelper { // Add extra bcc if (identity.bcc != null) { List
bcc = new ArrayList<>(); + Address[] existing = imessage.getRecipients(Message.RecipientType.BCC); if (existing != null) bcc.addAll(Arrays.asList(existing)); - bcc.addAll(Arrays.asList(InternetAddress.parse(identity.bcc))); + + Address[] all = imessage.getAllRecipients(); + Address[] abccs = InternetAddress.parse(identity.bcc); + for (Address abcc : abccs) { + boolean found = false; + if (all != null) + for (Address a : all) + if (equalEmail(a, abcc)) { + found = true; + break; + } + if (!found) + bcc.add(abcc); + } + imessage.setRecipients(Message.RecipientType.BCC, bcc.toArray(new Address[0])); } @@ -1426,6 +1441,16 @@ public class MessageHelper { return sb.toString(); } + static boolean equalEmail(Address a1, Address a2) { + String email1 = ((InternetAddress) a1).getAddress(); + String email2 = ((InternetAddress) a2).getAddress(); + if (email1 != null) + email1 = email1.toLowerCase(); + if (email2 != null) + email2 = email2.toLowerCase(); + return Objects.equals(email1, email2); + } + static boolean equal(Address[] a1, Address[] a2) { if (a1 == null && a2 == null) return true;