I know this is a perl question and not an imap-specific question,
but I don't have access to my perl lists from this computer.

The script below compiles and seems to run just fine, but the
message flags are not set to \\Seen in the line

$imap->see(@msgs);

Is there something I'm missing?

Mike


---------------------------------------------
#!/usr/bin/perl

#$Id$
# copied from cyrus_expunge.pl
# given a date on the command line
# select all messages in all folders before that date
# set the \Seen flag on all selected messages

# :!perl -d % -v three days ago
# :!perl -d % -v yesterday midnight
# :!perl -d % -v two hours ago
# :!perl -d % -v '12/07/07'

use Date::Manip;
use Mail::IMAPClient;
use IO::File;
use Getopt::Std;

# parse the command line
our($opt_v, $opt_s) = (0, 0);
getopts('sv') or die "usage: $0 [-v]";
$opt_s = 1 if $opt_v;

my $start = time;

# parse the command-line date
my $bdatestr = join(' ', @ARGV);
my $bdate = ParseDate($bdatestr);
my $bsecs = UnixDate($bdate, '%s');

# Change the following line (or replace it with something better):
my($h, $u, $p) = ('imap.example.com', 'cyrus','secret');

my $imap = Mail::IMAPClient->new(
                                        Server => "$h",                 # imap 
host
                                        User    => "$u",                        
# $u,   
                                        Password=> "$p",                        
# $p,
                                        Uid     => 1,                           
# True value
                                        Port    => 143,                         
# Cyrus
                                        Debug   => 0,                           
# True value
                                        Buffer  => 4096*10,                     
# True value
                                        Fast_io => 1,                           
# True value
                                        Timeout => 30,                          
# True value
                                        # Debug_fh=> 
IO::File->new('>/tmp/imap.out'),   # fhandle
                                ) 
or die "$@";
my $rfc2060date = $imap->Rfc2060_date($bsecs);

our($folder, $nchanged) = ('', 0);
our($nfolders, $nmessages, $ntotchanged) = (0, 0, 0);

for my $f ( $imap->folders ) {
        $folder = $f;
        next unless $f =~ /user.mikee.sales/oi;
        $nfolders++;
        unless ($imap->select($f) ) {
                $imap->setacl($f, $u, 'lrswipcda') or warn "Cannot setacl for 
$f: [EMAIL PROTECTED]" and next;
                $imap->select($f) or warn "Cannot select $f: $@" and next;
        }
        my @msgs = $imap->before($rfc2060date);
        my $messages_before = $imap->message_count($f);
        if(defined($messages_before)) {
                $imap->see(@msgs) or warn "$0: cannot set \\Seen flag on 
messages in folder '$f': $@";
                $nchanged = scalar(@msgs);
                $ntotchanged += $nchanged;
        }
        write if $opt_v;
}

# write a summary
if($opt_s) {
        my $stop = time;
        print "\nSummary:\n";
        print "Elapsed Seconds: ", ($stop - $start), "\n";
        print "Total Folders: $nfolders\n";
        print "Total Messages: $nmessages\n";
        print "Total Changed: $ntotchanged\n";
}

format STDOUT =
@<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< @>>>>>
$folder,                                                  $nchanged
.

format STDOUT_TOP =
Folder                                                    Reset
--------------------------------------------------------- ------
.
---------------------------------------------
----
Cyrus Home Page: http://cyrusimap.web.cmu.edu/
Cyrus Wiki/FAQ: http://cyrusimap.web.cmu.edu/twiki
List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html

Reply via email to