|
|
|
diff --git a/app/src/main/java/com/sun/mail/imap/IMAPStore.java b/app/src/main/java/com/sun/mail/imap/IMAPStore.java
|
|
|
|
index 866f17737..929e82d33 100644
|
|
|
|
--- a/app/src/main/java/com/sun/mail/imap/IMAPStore.java
|
|
|
|
+++ b/app/src/main/java/com/sun/mail/imap/IMAPStore.java
|
|
|
|
@@ -1014,6 +1014,8 @@ public class IMAPStore extends Store
|
|
|
|
p.disconnect();
|
|
|
|
} catch (Exception ex2) { }
|
|
|
|
p = null;
|
|
|
|
+ eu.faircode.email.Log.e(new MessagingException("IMAP connection failure", ex1));
|
|
|
|
+ throw new MessagingException("connection failure", ex1);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (p == null)
|
|
|
|
@@ -1529,6 +1531,30 @@ public class IMAPStore extends Store
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
+ public synchronized String getCapability(String capability)
|
|
|
|
+ throws MessagingException {
|
|
|
|
+ IMAPProtocol p = null;
|
|
|
|
+ try {
|
|
|
|
+ p = getStoreProtocol();
|
|
|
|
+ Map<String, String> caps = p.getCapabilities();
|
|
|
|
+ if (caps != null)
|
|
|
|
+ for (String cap : caps.values()) {
|
|
|
|
+ int eq = (cap == null ? -1 : cap.indexOf('='));
|
|
|
|
+ if (eq > 0) {
|
|
|
|
+ String key = cap.substring(0, eq);
|
|
|
|
+ String value = cap.substring(eq + 1);
|
|
|
|
+ if (capability.equals(key))
|
|
|
|
+ return value;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return null;
|
|
|
|
+ } catch (ProtocolException pex) {
|
|
|
|
+ throw new MessagingException(pex.getMessage(), pex);
|
|
|
|
+ } finally {
|
|
|
|
+ releaseStoreProtocol(p);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
/**
|
|
|
|
* 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;
|
|
|
|
+ }
|
|
|
|
}
|