From e67efaae3e5b7d2826107fbedddab3aaba9fd1be Mon Sep 17 00:00:00 2001 From: M66B Date: Wed, 14 Jun 2023 22:30:40 +0200 Subject: [PATCH] Simplified looking up sent messages --- app/src/main/java/eu/faircode/email/Core.java | 30 +++++++++++-------- .../java/eu/faircode/email/EntityAccount.java | 4 +++ 2 files changed, 22 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/Core.java b/app/src/main/java/eu/faircode/email/Core.java index 07b1ef23c7..976f28700d 100644 --- a/app/src/main/java/eu/faircode/email/Core.java +++ b/app/src/main/java/eu/faircode/email/Core.java @@ -2155,18 +2155,24 @@ class Core { throw new IllegalArgumentException("exists without msgid"); // Search for message - Message[] imessages = ifolder.search(new MessageIDTerm(message.msgid)); - if (imessages == null || imessages.length == 0) - try { - // Needed for Outlook - imessages = ifolder.search( - new AndTerm( - new SentDateTerm(ComparisonTerm.GE, new Date()), - new HeaderTerm(MessageHelper.HEADER_CORRELATION_ID, message.msgid))); - } catch (Throwable ex) { - Log.e(ex); - // Seznam: Jakarta Mail Exception: java.io.IOException: Connection dropped by server? - } + Message[] imessages = (account.isOutlook()) + ? ifolder.search(new HeaderTerm("X-Microsoft-Original-Message-ID", message.msgid)) + : ifolder.search(new MessageIDTerm(message.msgid)); + + // Fallback + if (false) + if (imessages == null || imessages.length == 0) + try { + // Needed for Outlook + imessages = ifolder.search( + new AndTerm( + new SentDateTerm(ComparisonTerm.GE, new Date()), + new HeaderTerm(MessageHelper.HEADER_CORRELATION_ID, message.msgid))); + } catch (Throwable ex) { + Log.e(ex); + // iCloud: NO [UNAVAILABLE] Unexpected exception + // Seznam: Jakarta Mail Exception: java.io.IOException: Connection dropped by server? + } // Some email servers are slow with adding sent messages if (retry) diff --git a/app/src/main/java/eu/faircode/email/EntityAccount.java b/app/src/main/java/eu/faircode/email/EntityAccount.java index 4ca48cfdc0..b87c61a909 100644 --- a/app/src/main/java/eu/faircode/email/EntityAccount.java +++ b/app/src/main/java/eu/faircode/email/EntityAccount.java @@ -208,6 +208,10 @@ public class EntityAccount extends EntityOrder implements Serializable { return "imap.aol.com".equalsIgnoreCase(host); } + boolean isICloud() { + return "imap.mail.me.com".equalsIgnoreCase(host); + } + boolean isTransient(Context context) { SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); boolean enabled = prefs.getBoolean("enabled", true);