diff options
Diffstat (limited to 'program')
| -rw-r--r-- | program/include/rcube_imap.php | 5 | ||||
| -rw-r--r-- | program/steps/mail/sendmail.inc | 19 | 
2 files changed, 13 insertions, 11 deletions
| diff --git a/program/include/rcube_imap.php b/program/include/rcube_imap.php index 9db6427b2..6e4d9890e 100644 --- a/program/include/rcube_imap.php +++ b/program/include/rcube_imap.php @@ -2774,6 +2774,10 @@ class rcube_imap              if ($mbox_name == 'INBOX')                  return true; +            $key = $subscription ? 'subscribed' : 'existing'; +            if (is_array($this->icache[$key]) && in_array($mbox_name, $this->icache[$key])) +                return true; +              if ($subscription) {                  $a_folders = $this->conn->listSubscribed($this->mod_mailbox(''), $mbox_name);              } @@ -2782,6 +2786,7 @@ class rcube_imap  	        }              if (is_array($a_folders) && in_array($this->mod_mailbox($mbox_name), $a_folders)) { +                $this->icache[$key][] = $mbox_name;                  return true;              }          } diff --git a/program/steps/mail/sendmail.inc b/program/steps/mail/sendmail.inc index e9d215003..aed7af9ac 100644 --- a/program/steps/mail/sendmail.inc +++ b/program/steps/mail/sendmail.inc @@ -566,17 +566,14 @@ else  if ($store_target)    { -  // check if mailbox exists -  if (!in_array($store_target, $IMAP->list_mailboxes())) -    { -      // folder may be existing but not subscribed (#1485241) -      if (!in_array($store_target, $IMAP->list_unsubscribed())) -        $store_folder = $IMAP->create_mailbox($store_target, TRUE); -      else if ($IMAP->subscribe($store_target)) -        $store_folder = TRUE; -    } -  else -    $store_folder = TRUE; +  // check if folder is subscribed +  if ($IMAP->mailbox_exists($store_target, true)) +    $store_folder = true; +  // folder may be existing but not subscribed (#1485241) +  else if (!$IMAP->mailbox_exists($store_target)) +    $store_folder = $IMAP->create_mailbox($store_target, true); +  else if ($IMAP->subscribe($store_target)) +    $store_folder = true;    // append message to sent box    if ($store_folder) { | 
