From 3e9fa1a7f5baa0057c6d08bdc71fb7a389b72145 Mon Sep 17 00:00:00 2001 From: M66B Date: Mon, 20 May 2024 16:27:57 +0200 Subject: [PATCH] DKIM: highlight found signer --- .../eu/faircode/email/AdapterMessage.java | 29 ++++++++++++------- .../java/eu/faircode/email/MessageHelper.java | 2 ++ 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/AdapterMessage.java b/app/src/main/java/eu/faircode/email/AdapterMessage.java index 8d80c7464b..f02b9e9edd 100644 --- a/app/src/main/java/eu/faircode/email/AdapterMessage.java +++ b/app/src/main/java/eu/faircode/email/AdapterMessage.java @@ -2630,20 +2630,30 @@ public class AdapterMessage extends RecyclerView.Adapter 0 ? View.VISIBLE : View.GONE); boolean known_signer = false; - if (native_dkim && - message.signedby != null && - message.from != null && - message.from.length == 1) { + SpannableStringBuilder signers = new SpannableStringBuilderEx(); + if (native_dkim && message.signedby != null) { // https://dmarcly.com/blog/what-is-dmarc-identifier-alignment-domain-alignment - String domain = UriHelper.getEmailDomain(((InternetAddress) message.from[0]).getAddress()); - if (domain != null) - for (String signer : message.signedby.split(",")) - if (Objects.equals( + List
envelop = new ArrayList<>(); + if (message.return_path != null) + envelop.addAll(Arrays.asList(message.return_path)); + if (message.from != null) + envelop.addAll(Arrays.asList(message.from)); + for (String signer : message.signedby.split(",")) { + if (signers.length() > 0) + signers.append(", "); + int start = signers.length(); + signers.append(signer); + for (Address a : envelop) { + String domain = UriHelper.getEmailDomain(((InternetAddress) a).getAddress()); + if (domain != null && Objects.equals( UriHelper.getRootDomain(context, signer), UriHelper.getRootDomain(context, domain))) { + signers.setSpan(new ForegroundColorSpan(textColorLink), start, signers.length(), 0); known_signer = true; break; } + } + } } boolean show_signers = (native_dkim && message.signedby != null && @@ -2651,8 +2661,7 @@ public class AdapterMessage extends RecyclerView.Adapter