diff --git a/app/src/main/java/eu/faircode/email/EntityRule.java b/app/src/main/java/eu/faircode/email/EntityRule.java index 2b75296eef..ce345cee31 100644 --- a/app/src/main/java/eu/faircode/email/EntityRule.java +++ b/app/src/main/java/eu/faircode/email/EntityRule.java @@ -858,7 +858,7 @@ public class EntityRule { return cal; } - static EntityRule blockSender(Context context, EntityMessage message, EntityFolder junk, boolean block_domain, List whitelist) throws JSONException { + static EntityRule blockSender(Context context, EntityMessage message, EntityFolder junk, boolean block_domain) throws JSONException { if (message.from == null || message.from.length == 0) return null; @@ -873,17 +873,8 @@ public class EntityRule { if (block_domain) { int at = sender.indexOf('@'); if (at > 0) { - boolean whitelisted = false; - String domain = UriHelper.getParentDomain(context, sender.substring(at + 1)); - for (String d : whitelist) - if (domain.matches(d)) { - whitelisted = true; - break; - } - if (!whitelisted) { - regex = true; - sender = ".*@.*" + domain + ".*"; - } + regex = true; + sender = ".*@.*" + sender.substring(at + 1) + ".*"; } } diff --git a/app/src/main/java/eu/faircode/email/FragmentDialogJunk.java b/app/src/main/java/eu/faircode/email/FragmentDialogJunk.java index 0aab9502ef..be2d584099 100644 --- a/app/src/main/java/eu/faircode/email/FragmentDialogJunk.java +++ b/app/src/main/java/eu/faircode/email/FragmentDialogJunk.java @@ -25,6 +25,8 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; +import android.content.res.ColorStateList; +import android.os.Build; import android.os.Bundle; import android.text.TextUtils; import android.view.LayoutInflater; @@ -48,6 +50,10 @@ import androidx.preference.PreferenceManager; import org.json.JSONObject; import java.util.List; +import java.util.Locale; + +import javax.mail.Address; +import javax.mail.internet.InternetAddress; public class FragmentDialogJunk extends FragmentDialogBase { @NonNull @@ -264,6 +270,35 @@ public class FragmentDialogJunk extends FragmentDialogBase { } }); + try { + boolean common = false; + Address[] froms = InternetAddress.parseHeader(from, false); + String email = (froms.length == 0 ? null : ((InternetAddress) froms[0]).getAddress()); + int at = (email == null ? -1 : email.indexOf('@')); + String domain = (at > 0 ? email.substring(at + 1).toLowerCase(Locale.ROOT) : null); + + if (domain != null) { + List domains = EmailProvider.getDomainNames(context); + for (String d : domains) + if (domain.matches(d)) { + common = true; + break; + } + } + + if (common) { + int dp6 = Helper.dp2pixels(context, 6); + int colorWarning = Helper.resolveColor(context, R.attr.colorWarning); + cbBlockDomain.setTextColor(colorWarning); + cbBlockDomain.setCompoundDrawablesRelativeWithIntrinsicBounds(0, 0, R.drawable.twotone_warning_24, 0); + cbBlockDomain.setCompoundDrawablePadding(dp6); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) + cbBlockDomain.setCompoundDrawableTintList(ColorStateList.valueOf(colorWarning)); + } + } catch (Throwable ex) { + Log.e(ex); + } + // Initialize tvMessage.setText(inJunk ? getString(R.string.title_folder_junk) diff --git a/app/src/main/java/eu/faircode/email/FragmentMessages.java b/app/src/main/java/eu/faircode/email/FragmentMessages.java index d80657bfc8..0fa18a98c7 100644 --- a/app/src/main/java/eu/faircode/email/FragmentMessages.java +++ b/app/src/main/java/eu/faircode/email/FragmentMessages.java @@ -8003,7 +8003,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences. EntityContact.TYPE_JUNK, message.received); if (block_domain) { - EntityRule rule = EntityRule.blockSender(context, message, junk, block_domain, whitelist); + EntityRule rule = EntityRule.blockSender(context, message, junk, block_domain); if (rule != null) { if (message.folder.equals(junk.id)) { EntityFolder inbox = db.folder().getFolderByType(message.account, EntityFolder.INBOX); diff --git a/app/src/main/java/eu/faircode/email/ServiceUI.java b/app/src/main/java/eu/faircode/email/ServiceUI.java index e148a10480..1ce517367f 100644 --- a/app/src/main/java/eu/faircode/email/ServiceUI.java +++ b/app/src/main/java/eu/faircode/email/ServiceUI.java @@ -252,7 +252,6 @@ public class ServiceUI extends IntentService { private void onJunk(long id) throws JSONException { SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); boolean block_sender = prefs.getBoolean("notify_block_sender", false); - List whitelist = EmailProvider.getDomainNames(this); DB db = DB.getInstance(this); try { @@ -269,7 +268,7 @@ public class ServiceUI extends IntentService { EntityOperation.queue(this, message, EntityOperation.MOVE, junk.id); if (block_sender) { - EntityRule rule = EntityRule.blockSender(this, message, junk, false, whitelist); + EntityRule rule = EntityRule.blockSender(this, message, junk, false); if (rule != null) rule.id = db.rule().insertRule(rule); }