From d83db8be77f04dee7e46db5cc9f1e481d429bdf8 Mon Sep 17 00:00:00 2001 From: M66B Date: Sat, 25 Jul 2020 13:23:03 +0200 Subject: [PATCH] Improved workaround for expunged messages --- .../java/com/sun/mail/imap/IMAPMessage.java | 22 +++++++++++++ patches/JavaMail.patch | 31 +++++++++++++++++++ 2 files changed, 53 insertions(+) diff --git a/app/src/main/java/com/sun/mail/imap/IMAPMessage.java b/app/src/main/java/com/sun/mail/imap/IMAPMessage.java index 453479d989..acd5b42f94 100644 --- a/app/src/main/java/com/sun/mail/imap/IMAPMessage.java +++ b/app/src/main/java/com/sun/mail/imap/IMAPMessage.java @@ -1697,4 +1697,26 @@ public class IMAPMessage extends MimeMessage implements ReadableMime { Session _getSession() { return session; } + + @Override + public boolean isExpunged() { + if (super.isExpunged()) + return true; + + // Workaround expunged messages without deleted flag + if (envelope != null && + envelope.date == null && + envelope.subject == null && + envelope.from == null && + envelope.sender == null && + envelope.replyTo == null && + envelope.to == null && + envelope.cc == null && + envelope.inReplyTo == null && + envelope.messageId == null && + headersLoaded && loadedHeaders.size() == 0) + return true; + + return false; + } } diff --git a/patches/JavaMail.patch b/patches/JavaMail.patch index 21134e79d6..6d776734de 100644 --- a/patches/JavaMail.patch +++ b/patches/JavaMail.patch @@ -42,3 +42,34 @@ index 866f17737..929e82d33 100644 /** * Set the user name to be used with the PROXYAUTH command. * The PROXYAUTH user name can also be set using the +diff --git a/app/src/main/java/com/sun/mail/imap/IMAPMessage.java b/app/src/main/java/com/sun/mail/imap/IMAPMessage.java +index 453479d98..acd5b42f9 100644 +--- a/app/src/main/java/com/sun/mail/imap/IMAPMessage.java ++++ b/app/src/main/java/com/sun/mail/imap/IMAPMessage.java +@@ -1697,4 +1697,26 @@ public class IMAPMessage extends MimeMessage implements ReadableMime { + Session _getSession() { + return session; + } ++ ++ @Override ++ public boolean isExpunged() { ++ if (super.isExpunged()) ++ return true; ++ ++ // Workaround expunged messages without deleted flag ++ if (envelope != null && ++ envelope.date == null && ++ envelope.subject == null && ++ envelope.from == null && ++ envelope.sender == null && ++ envelope.replyTo == null && ++ envelope.to == null && ++ envelope.cc == null && ++ envelope.inReplyTo == null && ++ envelope.messageId == null && ++ headersLoaded && loadedHeaders.size() == 0) ++ return true; ++ ++ return false; ++ } + }