Mail-IMAPClient-3.14 message_count

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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: sandmant@xxxxxxxx
----
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



[Index of Archives]     [Cyrus SASL]     [Squirrel Mail]     [Asterisk PBX]     [Video For Linux]     [Photo]     [Yosemite News]     [gtk]     [KDE]     [Gimp on Windows]     [Steve's Art]

  Powered by Linux