diff --git a/app/src/main/java/eu/faircode/email/MessageHelper.java b/app/src/main/java/eu/faircode/email/MessageHelper.java index 1e6d7a1975..996c8245ba 100644 --- a/app/src/main/java/eu/faircode/email/MessageHelper.java +++ b/app/src/main/java/eu/faircode/email/MessageHelper.java @@ -53,6 +53,7 @@ import javax.mail.MessagingException; import javax.mail.Multipart; import javax.mail.Part; import javax.mail.Session; +import javax.mail.internet.AddressException; import javax.mail.internet.ContentType; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; @@ -456,6 +457,24 @@ public class MessageHelper { return (TextUtils.isEmpty(msgid) ? Long.toString(uid) : msgid); } + Address getSender() throws MessagingException { + String sender = imessage.getHeader("Sender", null); + if (sender == null) + return null; + + InternetAddress[] address = null; + try { + address = InternetAddress.parse(sender); + } catch (AddressException ex) { + Log.w(ex); + } + + if (address == null || address.length == 0) + return null; + + return address[0]; + } + Address[] getFrom() throws MessagingException { return imessage.getFrom(); } @@ -560,7 +579,7 @@ public class MessageHelper { private Part plain = null; private Part html = null; private List attachments = new ArrayList<>(); - private List warnings = new ArrayList<>(); + private ArrayList warnings = new ArrayList<>(); String getHtml(Context context) throws MessagingException { if (plain == null && html == null) { @@ -709,7 +728,9 @@ public class MessageHelper { } } - String getWarnings() { + String getWarnings(String existing) { + if (existing != null) + warnings.add(0, existing); if (warnings.size() == 0) return null; else diff --git a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java index 5d9e62f86d..419c7817c9 100644 --- a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java +++ b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java @@ -1969,7 +1969,7 @@ public class ServiceSynchronize extends LifecycleService { String preview = HtmlHelper.getPreview(body); message.write(this, body); db.message().setMessageContent(message.id, true, preview); - db.message().setMessageWarning(message.id, parts.getWarnings()); + db.message().setMessageWarning(message.id, parts.getWarnings(message.warning)); } private void doAttachment(EntityFolder folder, EntityOperation op, IMAPFolder ifolder, EntityMessage message, JSONArray jargs, DB db) throws JSONException, MessagingException, IOException { @@ -2515,6 +2515,17 @@ public class ServiceSynchronize extends LifecycleService { message.ui_ignored = seen; message.ui_browsed = browsed; + // Check sender + Address sender = helper.getSender(); + if (sender != null && senders.length > 0) { + String[] f = ((InternetAddress) senders[0]).getAddress().split("@"); + String[] s = ((InternetAddress) sender).getAddress().split("@"); + if (f.length > 1 && s.length > 1) { + if (!f[1].equals(s[1])) + message.warning = context.getString(R.string.title_via, s[1]); + } + } + message.id = db.message().insertMessage(message); Log.i(folder.name + " added id=" + message.id + " uid=" + message.uid); @@ -2658,7 +2669,7 @@ public class ServiceSynchronize extends LifecycleService { String body = parts.getHtml(context); message.write(context, body); db.message().setMessageContent(message.id, true, HtmlHelper.getPreview(body)); - db.message().setMessageWarning(message.id, parts.getWarnings()); + db.message().setMessageWarning(message.id, parts.getWarnings(message.warning)); Log.i(folder.name + " downloaded message id=" + message.id + " size=" + message.size); } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 8fb62aae66..e4a0751e4a 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -459,6 +459,7 @@ Adobe Acrobat reader cannot open safely shared files, see the FAQ for more information No message text found Unsupported encoding: %1$s + Via: %1$s Try FairEmail, an open source, privacy friendly email app for Android