#!/usr/bin/perl use Mail::Cclient; my $mailbox_name = "/web/m/a/markf/email/mark/INBOX"; my $date = `date -d "3 weeks ago" "+%d-%b-%Y"`; chomp($date); print "Deleting messages sent before: $date\n"; print "Deleting from mailbox: $mailbox_name\n"; my $mbox = Mail::Cclient->new($mailbox_name); print "Messages before cleanout: " . $mbox->nmsgs . "\n"; my @message_nums; Mail::Cclient::set_callback("log", sub { warn "log callback: " . shift() . "\n"; } ); Mail::Cclient::set_callback("dlog", sub { warn "dlog callback: " . shift() . "\n"; } ); Mail::Cclient::set_callback("fatal", sub { die "fatal callback: " . shift() . "\n"; } ); Mail::Cclient::set_callback("searched", sub { my ($mailstream, $msgno) = @_; push @message_nums, $msgno; }); $mbox->search( SEARCH => "BEFORE $date SENTBEFORE $date UNDELETED", ); # print "message_nums = " . join(",",@message_nums) . "\n"; # print $mbox->fetchheader($message_nums[0]); # print $mbox->fetchtext($message_nums[0]); $mbox->setflag(join(",",@message_nums), "\\Deleted"); $mbox->expunge() if ( @message_nums ); print "Messages after cleanout: " . $mbox->nmsgs . "\n";