diff --git a/app/src/main/java/eu/faircode/email/ContactInfo.java b/app/src/main/java/eu/faircode/email/ContactInfo.java index 1080dcd361..4f1ef9339f 100644 --- a/app/src/main/java/eu/faircode/email/ContactInfo.java +++ b/app/src/main/java/eu/faircode/email/ContactInfo.java @@ -873,22 +873,35 @@ public class ContactInfo { } } + static Uri getLookupUri(List
addresses) { + return getLookupUri(addresses.toArray(new Address[0])); + } + static Uri getLookupUri(Address[] addresses) { if (addresses == null) return null; for (Address from : addresses) { String email = ((InternetAddress) from).getAddress(); - if (!TextUtils.isEmpty(email)) { - Lookup lookup = emailLookup.get(email.toLowerCase(Locale.ROOT)); - if (lookup != null) - return lookup.uri; - } + if (TextUtils.isEmpty(email)) + continue; + + Lookup lookup = emailLookup.get(email.toLowerCase(Locale.ROOT)); + if (lookup != null) + return lookup.uri; } return null; } + static Uri getLookupUri(String email) { + if (TextUtils.isEmpty(email)) + return null; + + Lookup lookup = emailLookup.get(email.toLowerCase(Locale.ROOT)); + return (lookup == null ? null : lookup.uri); + } + static Address[] fillIn(Address[] addresses, boolean prefer_contact, boolean only_contact) { if (addresses == null) return null; diff --git a/app/src/main/java/eu/faircode/email/DnsBlockList.java b/app/src/main/java/eu/faircode/email/DnsBlockList.java index 6da9ddcc2d..03430ae105 100644 --- a/app/src/main/java/eu/faircode/email/DnsBlockList.java +++ b/app/src/main/java/eu/faircode/email/DnsBlockList.java @@ -155,6 +155,9 @@ public class DnsBlockList { } static Boolean isJunk(Context context, List
addresses) { + if (ContactInfo.getLookupUri(addresses) != null) + return false; + boolean hasDomain = false; for (Address address : addresses) { String email = ((InternetAddress) address).getAddress(); @@ -165,6 +168,7 @@ public class DnsBlockList { if (isJunk(context, domain, false, BLOCK_LISTS)) return true; } + return (hasDomain ? false : null); } @@ -172,6 +176,14 @@ public class DnsBlockList { String domain = null; if ("mailto".equalsIgnoreCase(uri.getScheme())) { MailTo email = MailTo.parse(uri.toString()); + + String to = email.getTo(); + if (TextUtils.isEmpty(to)) + return null; + + if (ContactInfo.getLookupUri(to) != null) + return false; + domain = UriHelper.getEmailDomain(email.getTo()); } else domain = uri.getHost();