From 22c3f06fb08e157c603f45ed50988ee9b97dd7a2 Mon Sep 17 00:00:00 2001 From: M66B Date: Fri, 24 Jul 2020 20:52:50 +0200 Subject: [PATCH] Workaround expunged messages without deleted flag --- .../java/com/sun/mail/imap/IMAPMessage.java | 24 ++++++++++++++ patches/JavaMail.patch | 33 +++++++++++++++++++ 2 files changed, 57 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..29433351fe 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,28 @@ 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 (size == 0 && + receivedDate != null && + receivedDate.getTime() == 0 && + 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) + return true; + + return false; + } } diff --git a/patches/JavaMail.patch b/patches/JavaMail.patch index 21134e79d6..ae7b08978b 100644 --- a/patches/JavaMail.patch +++ b/patches/JavaMail.patch @@ -42,3 +42,36 @@ 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..29433351f 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,28 @@ 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 (size == 0 && ++ receivedDate != null && ++ receivedDate.getTime() == 0 && ++ 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) ++ return true; ++ ++ return false; ++ } + }