diff --git a/src/imap.rs b/src/imap.rs index cb3843ee0..84871cb89 100644 --- a/src/imap.rs +++ b/src/imap.rs @@ -554,7 +554,10 @@ impl Imap { folder: &str, ) -> Result { let session = self.session.as_mut().context("no session")?; - let newly_selected = session.select_or_create_folder(context, folder).await?; + let newly_selected = session + .select_or_create_folder(context, folder) + .await + .with_context(|| format!("failed to select or create folder {}", folder))?; let mailbox = session .selected_mailbox .as_mut() @@ -564,8 +567,12 @@ impl Imap { .uid_validity .with_context(|| format!("No UIDVALIDITY for folder {}", folder))?; - let old_uid_validity = get_uidvalidity(context, folder).await?; - let old_uid_next = get_uid_next(context, folder).await?; + let old_uid_validity = get_uidvalidity(context, folder) + .await + .with_context(|| format!("failed to get old UID validity for folder {}", folder))?; + let old_uid_next = get_uid_next(context, folder) + .await + .with_context(|| format!("failed to get old UID NEXT for folder {}", folder))?; if new_uid_validity == old_uid_validity { let new_emails = if newly_selected == NewlySelected::No { diff --git a/src/imap/select_folder.rs b/src/imap/select_folder.rs index 3f04f41a2..facf04ffc 100644 --- a/src/imap/select_folder.rs +++ b/src/imap/select_folder.rs @@ -109,13 +109,14 @@ impl ImapSession { Ok(newly_selected) => Ok(newly_selected), Err(err) => match err { Error::NoFolder(..) => { + info!(context, "Failed to select folder {} because it does not exist, trying to create it.", folder); self.create(folder).await.with_context(|| { format!("Couldn't select folder ('{}'), then create() failed", err) })?; - Ok(self.select_folder(context, Some(folder)).await?) + Ok(self.select_folder(context, Some(folder)).await.with_context(|| format!("failed to select newely created folder {}", folder))?) } - _ => Err(err.into()), + _ => Err(err).with_context(|| format!("failed to select folder {} with error other than NO, not trying to create it", folder)), }, } }