From 068034a5f96348f052d4302255e1b9b8d26b0190 Mon Sep 17 00:00:00 2001 From: M66B Date: Tue, 27 Jun 2023 21:35:13 +0200 Subject: [PATCH] Add references when deleting attachments --- app/src/main/java/eu/faircode/email/Core.java | 4 +++ .../java/eu/faircode/email/MessageHelper.java | 26 +++++++++---------- 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/Core.java b/app/src/main/java/eu/faircode/email/Core.java index 44f9b93f94..cbda6f208a 100644 --- a/app/src/main/java/eu/faircode/email/Core.java +++ b/app/src/main/java/eu/faircode/email/Core.java @@ -2111,7 +2111,11 @@ class Core { throw new MessageRemovedException(); String msgid = EntityMessage.generateMessageId(); + String ref = (TextUtils.isEmpty(message.references) + ? message.msgid + : message.references + " " + message.msgid); MimeMessage icopy = new MimeMessageEx((MimeMessage) imessage, msgid); + icopy.addHeader("References", MessageHelper.limitReferences(ref)); MessageHelper helper = new MessageHelper(icopy, context); MessageHelper.MessageParts parts = helper.getMessageParts(); List aparts = parts.getAttachmentParts(); diff --git a/app/src/main/java/eu/faircode/email/MessageHelper.java b/app/src/main/java/eu/faircode/email/MessageHelper.java index 70ee2d8772..2648717d5c 100644 --- a/app/src/main/java/eu/faircode/email/MessageHelper.java +++ b/app/src/main/java/eu/faircode/email/MessageHelper.java @@ -372,19 +372,8 @@ public class MessageHelper { imessage.addHeader("Sensitivity", "Company-Confidential"); // References - if (message.references != null) { - // https://tools.ietf.org/html/rfc5322#section-2.1.1 - // Each line of characters MUST be no more than 998 characters ... , excluding the CRLF. - String references = message.references; - int maxlen = MAX_HEADER_LENGTH - "References: ".length(); - int sp = references.indexOf(' '); - while (references.length() > maxlen && sp > 0) { - Log.i("Dropping reference=" + references.substring(0, sp)); - references = references.substring(sp); - sp = references.indexOf(' '); - } - imessage.addHeader("References", references); - } + if (message.references != null) + imessage.addHeader("References", limitReferences(message.references)); if (message.inreplyto != null) imessage.addHeader("In-Reply-To", message.inreplyto); @@ -820,6 +809,17 @@ public class MessageHelper { return new InternetAddress(email, name, StandardCharsets.UTF_8.name()); } + static String limitReferences(String references) { + int maxlen = MAX_HEADER_LENGTH - "References: ".length(); + int sp = references.indexOf(' '); + while (references.length() > maxlen && sp > 0) { + Log.i("Dropping reference=" + references.substring(0, sp)); + references = references.substring(sp); + sp = references.indexOf(' '); + } + return references; + } + static Pair getExtra(String email, String extra) { String name = null; int comma = extra.indexOf(',');