-/// `MailDrop` can't find folders to sync because it implements IMAPv3 and
-/// sends FIND MAILBOXES /*, which does not exist in IMAPv4.
+/// `MailDrop` can't find folders to sync because it implements `IMAPv3` and
+/// sends FIND MAILBOXES /*, which does not exist in `IMAPv4`.
/// which is not understood by modern servers. It instead replaces it with
/// a LIST command.
pub struct FindMailboxesCompatibility {
/// which is not understood by modern servers. It instead replaces it with
/// a LIST command.
pub struct FindMailboxesCompatibility {
if command.contains("FIND MAILBOXES /*") {
if let Some(tag) = command.split("FIND MAILBOXES /*").next() {
// We'll need to convert the LIST to a FIND
if command.contains("FIND MAILBOXES /*") {
if let Some(tag) = command.split("FIND MAILBOXES /*").next() {
// We'll need to convert the LIST to a FIND
// We want to only modify responses that were a result of a MAILBOX call.
if !contains_ok_completed {
// We want to only modify responses that were a result of a MAILBOX call.
if !contains_ok_completed {
// Transform IMAPv4 "* LIST" lines to IMAPv3 "* MAILBOX"
if line.starts_with("* LIST") {
if let Some(last_slash_pos) = line.rfind('/') {
// Transform IMAPv4 "* LIST" lines to IMAPv3 "* MAILBOX"
if line.starts_with("* LIST") {
if let Some(last_slash_pos) = line.rfind('/') {
- let mailbox_name = line[(last_slash_pos + 1)..].trim();
- return Some(format!("* MAILBOX {}\r", mailbox_name));
+ let mailbox_name = line[(last_slash_pos + 2)..].trim();
+ return Some(format!("* MAILBOX {mailbox_name}\r"));