Mail-IMAPClient-3.14 message_count

"Tod A. Sandman via Info-cyrus" <[email protected]>
Newsgroups gmane.mail.imap.cyrus
Message-ID <[email protected]>
I recently upgraded my cyrus-imapd software and hardware:

  Mail-IMAPClient-3.14 -> Mail-IMAPClient-3.37
  cyrus-imapd-2.3.16 -> cyrus-imapd-2.5.10
  Rhel6 -> Rhel7

and Mail-IMAPClient->message_count() began failing on folder names containing spaces.

I tried 1) escaping the spaces with '\', and 2) using Mail-IMAPClient->Quote, but neither has resolved the issue.


My script creates a Mail-IMAPClient object, searches for a list of folders with Mail-IMAPClient->list, and then, for each element in the list, parses out the folder name (enclosing double quotes included, if present) and calls message_count() on the folder name.

The script works on the old system, spaces or not, but on the new system fails on folder names with spaces.

Perl code snip follows:

  defined ($folders = $imap->list ($imap_base, $folder)) or return
    LogWarn ("Failure getting Dspam folder list:", $@);

  unless (@$folders) {
    Show ("No folders found matching \"$folder\".") unless $Quiet;
    return $TRUE;
  }

  foreach $folder (@$folders) {

    chomp $folder; $folder =~ s/\r$//;
    Show ("Checking folder string \"$folder\".") if $Config{Debug};

    if ($folder =~ m:\* LIST .* ("?$imap_base.*"?):) {
      $folder = $1;
      $folder =~ m:$imap_base([^$separator]+)$separator:;
      Show ("Checking folder \"$folder\".") if $Config{Debug};
      if ($user = $1) {
    ..........................
       #$msgcount = $imap->message_count($imap->Quote($folder));
        $msgcount = $imap->message_count($folder);
        unless (defined ($msgcount)) {
           if ($Verbose) {    ## Fix this
             LogWarn ("Could not get message count for folder \"$folder\".");
             LogWarn ("Skipping folder \"$folder\":" . $@);
          }
          return $TRUE;
        }

Here is sample output when hitting a folder with spaces:

dspam_folder_train: Checking folder string "* LIST (\HasNoChildren) "/" "user/willr/Inbox Rice/A/DSPAM_spam"".
dspam_folder_train: Checking folder ""user/willr/Inbox Rice/A/DSPAM_spam"".
dspam_folder_train: Could not get message count for folder ""user/willr/Inbox Rice/A/DSPAM_spam"".
dspam_folder_train: Skipping folder ""user/willr/Inbox Rice/A/DSPAM_spam"":

Here I try only escaping spaces:

dspam_folder_train: Could not get message count for folder ""user/willr/Inbox\ Rice/A/DSPAM_spam"".

Here I try escaping spaces and removing enclosing double quotes:

dspam_folder_train: Could not get message count for folder "user/willr/Inbox\ Rice/A/DSPAM_spam".

Any ideas?


Tod Sandman
Sr. Systems Administrator
Office of Information Technology
Rice University
Email: [email protected]
----
Cyrus Home Page: http://www.cyrusimap.org/
List Archives/Info: http://lists.andrew.cmu.edu/pipermail/info-cyrus/
To Unsubscribe:
https://lists.andrew.cmu.edu/mailman/listinfo/info-cyrus
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.