diff --git a/app/src/main/java/eu/faircode/email/FragmentCompose.java b/app/src/main/java/eu/faircode/email/FragmentCompose.java index f8cc643d2c..f139e87ae1 100644 --- a/app/src/main/java/eu/faircode/email/FragmentCompose.java +++ b/app/src/main/java/eu/faircode/email/FragmentCompose.java @@ -4510,6 +4510,9 @@ public class FragmentCompose extends FragmentBase { boolean receipt_default = prefs.getBoolean("receipt_default", false); boolean write_below = prefs.getBoolean("write_below", false); boolean save_drafts = prefs.getBoolean("save_drafts", true); + boolean auto_identity = prefs.getBoolean("auto_identity", true); + boolean suggest_sent = prefs.getBoolean("suggest_sent", true); + boolean suggest_received = prefs.getBoolean("suggest_received", false); Log.i("Load draft action=" + action + " id=" + id + " reference=" + reference); @@ -4611,6 +4614,27 @@ public class FragmentCompose extends FragmentBase { } } + if (selected == null && auto_identity) + try { + Address[] tos = MessageHelper.parseAddresses(context, to); + if (tos != null && tos.length > 0) { + String email = ((InternetAddress) tos[0]).getAddress(); + List types = new ArrayList<>(); + if (suggest_sent) + types.add(EntityContact.TYPE_TO); + if (suggest_received) + types.add(EntityContact.TYPE_FROM); + List identities = db.contact().getIdentities(email, types); + if (identities != null && identities.size() == 1) { + EntityIdentity identity = db.identity().getIdentity(identities.get(0)); + if (identity != null) + selected = identity; + } + } + } catch (AddressException ex) { + Log.i(ex); + } + if (selected == null) for (EntityIdentity identity : data.identities) if (identity.account.equals(aid) && identity.primary) {