From cccf76cc780f791604dd67e866ed9628486570cd Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Thu, 1 Feb 2018 14:14:19 +0000 Subject: [PATCH] SusiMail: Don't duplicate Re: and Fwd: final formatters store Message-ID --- apps/susimail/src/src/i2p/susi/webmail/Mail.java | 9 ++++++--- apps/susimail/src/src/i2p/susi/webmail/WebMail.java | 12 ++++++++++-- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/apps/susimail/src/src/i2p/susi/webmail/Mail.java b/apps/susimail/src/src/i2p/susi/webmail/Mail.java index ce11e2bd8b..6d050b1848 100644 --- a/apps/susimail/src/src/i2p/susi/webmail/Mail.java +++ b/apps/susimail/src/src/i2p/susi/webmail/Mail.java @@ -77,6 +77,7 @@ class Mail { String[] to, cc; // addresses only, enclosed by <> private boolean isNew, isSpam; public String contentType; + public String messageID; // as received, trimmed only, probably enclosed with <>, not HTML escaped public String error; @@ -282,9 +283,9 @@ class Mail { } private static final DateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd HH:mm"); - private static DateFormat localDateFormatter = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT); - private static DateFormat longLocalDateFormatter = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM); - private static DateFormat mailDateFormatter = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z", Locale.ENGLISH ); + private static final DateFormat localDateFormatter = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT); + private static final DateFormat longLocalDateFormatter = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM); + private static final DateFormat mailDateFormatter = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z", Locale.ENGLISH ); static { // the router sets the JVM time zone to UTC but saves the original here so we can get it TimeZone tz = SystemVersion.getSystemTimeZone(); @@ -410,6 +411,8 @@ class Mail { // we want to know if we have attachments, even if // we haven't fetched the body contentType = line.substring(13).trim(); + } else if (hlc.startsWith("message-id:")) { + messageID = line.substring(11).trim(); } } } diff --git a/apps/susimail/src/src/i2p/susi/webmail/WebMail.java b/apps/susimail/src/src/i2p/susi/webmail/WebMail.java index 86ece4d968..8a597125b5 100644 --- a/apps/susimail/src/src/i2p/susi/webmail/WebMail.java +++ b/apps/susimail/src/src/i2p/susi/webmail/WebMail.java @@ -1088,7 +1088,11 @@ public class WebMail extends HttpServlet sessionObject.replyTo = mail.reply; else if( mail.sender != null && Mail.validateAddress( mail.sender ) ) sessionObject.replyTo = mail.sender; - sessionObject.subject = _t("Re:") + ' ' + mail.formattedSubject; + sessionObject.subject = mail.formattedSubject; + if (!(sessionObject.subject.startsWith("Re:") || + sessionObject.subject.startsWith(_t("Re:")))) { + sessionObject.subject = _t("Re:") + ' ' + sessionObject.subject; + } StringWriter text = new StringWriter(); PrintWriter pw = new PrintWriter( text ); pw.println( _t("On {0} {1} wrote:", mail.formattedDate + " UTC", sessionObject.replyTo) ); @@ -1126,7 +1130,11 @@ public class WebMail extends HttpServlet sessionObject.replyCC = buf.toString(); } if( forward ) { - sessionObject.subject = _t("Fwd:") + ' ' + mail.formattedSubject; + sessionObject.subject = mail.formattedSubject; + if (!(sessionObject.subject.startsWith("Fwd:") || + sessionObject.subject.startsWith(_t("Fwd:")))) { + sessionObject.subject = _t("Fwd:") + ' ' + sessionObject.subject; + } String sender = null; if( mail.reply != null && Mail.validateAddress( mail.reply ) ) sender = Mail.getAddress( mail.reply ); -- GitLab