diff --git a/app/src/main/java/eu/faircode/email/Core.java b/app/src/main/java/eu/faircode/email/Core.java index dd9dca2b5d..3d21dab819 100644 --- a/app/src/main/java/eu/faircode/email/Core.java +++ b/app/src/main/java/eu/faircode/email/Core.java @@ -4198,14 +4198,25 @@ class Core { if (s != null) map.put(s.id, s); - List reported = db.message().getMessagesByMsgId(folder.account, message.inreplyto); - if (reported != null) - for (EntityMessage m : reported) - if (!map.containsKey(m.folder)) { - EntityFolder f = db.folder().getFolder(m.folder); - if (f != null) - map.put(f.id, f); - } + List all = new ArrayList<>(); + + if (message.inreplyto != null) { + List replied = db.message().getMessagesByMsgId(folder.account, message.inreplyto); + if (replied != null) + all.addAll(replied); + } + if (r.refid != null) { + List refs = db.message().getMessagesByMsgId(folder.account, r.refid); + if (refs != null) + all.addAll(refs); + } + + for (EntityMessage m : all) + if (!map.containsKey(m.folder)) { + EntityFolder f = db.folder().getFolder(m.folder); + if (f != null) + map.put(f.id, f); + } for (EntityFolder f : map.values()) EntityOperation.queue(context, f, EntityOperation.REPORT, message.inreplyto, label); diff --git a/app/src/main/java/eu/faircode/email/MessageHelper.java b/app/src/main/java/eu/faircode/email/MessageHelper.java index 700448eaad..bf1dc4605f 100644 --- a/app/src/main/java/eu/faircode/email/MessageHelper.java +++ b/app/src/main/java/eu/faircode/email/MessageHelper.java @@ -4541,6 +4541,7 @@ public class MessageHelper { String status; String diagnostic; String disposition; + String refid; String html; Report(String type, String content) { @@ -4596,6 +4597,9 @@ public class MessageHelper { case "Disposition": this.disposition = value; break; + case "Original-Message-ID": + this.refid = value; + break; } } }