From 6792523fcdf1dffe6d1ab1354caf7603f6174eee Mon Sep 17 00:00:00 2001 From: "B. Petersen" Date: Thu, 18 Feb 2021 21:01:25 +0100 Subject: [PATCH] perfer X-Microsoft-Original-Message-ID also for delete-check and uid-sync --- src/imap/mod.rs | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/imap/mod.rs b/src/imap/mod.rs index e05fe8b8a..498af8df5 100644 --- a/src/imap/mod.rs +++ b/src/imap/mod.rs @@ -72,8 +72,14 @@ const PREFETCH_FLAGS: &str = "(UID BODY.PEEK[HEADER.FIELDS (\ CHAT-VERSION \ AUTOCRYPT-SETUP-MESSAGE\ )])"; -const DELETE_CHECK_FLAGS: &str = "(UID BODY.PEEK[HEADER.FIELDS (MESSAGE-ID)])"; -const RFC724MID_UID: &str = "(UID BODY.PEEK[HEADER.FIELDS (MESSAGE-ID)])"; +const DELETE_CHECK_FLAGS: &str = "(UID BODY.PEEK[HEADER.FIELDS (\ + MESSAGE-ID \ + X-MICROSOFT-ORIGINAL-MESSAGE-ID\ + )])"; +const RFC724MID_UID: &str = "(UID BODY.PEEK[HEADER.FIELDS (\ + MESSAGE-ID \ + X-MICROSOFT-ORIGINAL-MESSAGE-ID\ + )])"; const JUST_UID: &str = "(UID)"; const BODY_FLAGS: &str = "(FLAGS BODY.PEEK[])"; @@ -1594,7 +1600,9 @@ fn get_fetch_headers(prefetch_msg: &Fetch) -> Result> } fn prefetch_get_message_id(headers: &[mailparse::MailHeader]) -> Result { - if let Some(message_id) = headers.get_header_value(HeaderDef::MessageId) { + if let Some(message_id) = headers.get_header_value(HeaderDef::XMicrosoftOriginalMessageId) { + Ok(crate::mimeparser::parse_message_id(&message_id)?) + } else if let Some(message_id) = headers.get_header_value(HeaderDef::MessageId) { Ok(crate::mimeparser::parse_message_id(&message_id)?) } else { bail!("prefetch: No message ID found");