From a4696bdf28b4f35abb3543de03718a28f1394a6f Mon Sep 17 00:00:00 2001 From: M66B Date: Mon, 21 Nov 2022 17:16:58 +0100 Subject: [PATCH] Check cc/bcc for username --- .../eu/faircode/email/FragmentCompose.java | 92 ++++++++++--------- 1 file changed, 49 insertions(+), 43 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/FragmentCompose.java b/app/src/main/java/eu/faircode/email/FragmentCompose.java index fad8bff407..244c7fb9aa 100644 --- a/app/src/main/java/eu/faircode/email/FragmentCompose.java +++ b/app/src/main/java/eu/faircode/email/FragmentCompose.java @@ -5086,51 +5086,57 @@ public class FragmentCompose extends FragmentBase { data.draft.to = (ref.reply == null || ref.reply.length == 0 ? ref.from : ref.reply); } - if (data.draft.from != null && data.draft.from.length > 0) { - Address preferred = null; - if (ref.identity != null) { - EntityIdentity recognized = db.identity().getIdentity(ref.identity); - EntityLog.log(context, "Recognized=" + (recognized == null ? null : recognized.email)); - - if (recognized != null) { - Address same = null; - Address similar = null; - - for (Address from : data.draft.from) { - if (same == null && recognized.sameAddress(from)) - same = from; - if (similar == null && recognized.similarAddress(from)) - similar = from; - } - - //if (ref.deliveredto != null) - // try { - // Address deliveredto = new InternetAddress(ref.deliveredto); - // if (same == null && recognized.sameAddress(deliveredto)) - // same = deliveredto; - // if (similar == null && recognized.similarAddress(deliveredto)) - // similar = deliveredto; - // } catch (AddressException ex) { - // Log.w(ex); - // } - - EntityLog.log(context, "From=" + MessageHelper.formatAddresses(data.draft.from) + - " delivered-to=" + ref.deliveredto + - " same=" + (same == null ? null : ((InternetAddress) same).getAddress()) + - " similar=" + (similar == null ? null : ((InternetAddress) similar).getAddress())); - - preferred = (same == null ? similar : same); + Address preferred = null; + if (ref.identity != null) { + EntityIdentity recognized = db.identity().getIdentity(ref.identity); + EntityLog.log(context, "Recognized=" + (recognized == null ? null : recognized.email)); + + if (recognized != null) { + Address same = null; + Address similar = null; + + List
addresses = new ArrayList<>(); + if (data.draft.from != null) + addresses.addAll(Arrays.asList(data.draft.from)); + if (ref.cc != null) + addresses.addAll(Arrays.asList(ref.cc)); + if (ref.bcc != null) + addresses.addAll(Arrays.asList(ref.bcc)); + + for (Address from : addresses) { + if (same == null && recognized.sameAddress(from)) + same = from; + if (similar == null && recognized.similarAddress(from)) + similar = from; } - } else - EntityLog.log(context, "Recognized=null"); - if (preferred != null) { - String from = ((InternetAddress) preferred).getAddress(); - EntityLog.log(context, "Preferred=" + from); - data.draft.extra = UriHelper.getEmailUser(from); - } else - EntityLog.log(context, "Preferred=null"); - } + //if (ref.deliveredto != null) + // try { + // Address deliveredto = new InternetAddress(ref.deliveredto); + // if (same == null && recognized.sameAddress(deliveredto)) + // same = deliveredto; + // if (similar == null && recognized.similarAddress(deliveredto)) + // similar = deliveredto; + // } catch (AddressException ex) { + // Log.w(ex); + // } + + EntityLog.log(context, "From=" + MessageHelper.formatAddresses(data.draft.from) + + " delivered-to=" + ref.deliveredto + + " same=" + (same == null ? null : ((InternetAddress) same).getAddress()) + + " similar=" + (similar == null ? null : ((InternetAddress) similar).getAddress())); + + preferred = (same == null ? similar : same); + } + } else + EntityLog.log(context, "Recognized=null"); + + if (preferred != null) { + String from = ((InternetAddress) preferred).getAddress(); + EntityLog.log(context, "Preferred=" + from); + data.draft.extra = UriHelper.getEmailUser(from); + } else + EntityLog.log(context, "Preferred=null"); } if ("reply_all".equals(action))