Ramprasad A Padmanabhan wrote:
>
> I would like to write a program that deletes all mails from my popserver
> which are older than 'n' days
>
> Is there a script available already. If I were to write a script using
> Mail::POP3Client , I would have to fetch the headers of all mails and
> the parse mail headers
>
> Is there no module that can return all mails recd before a particular date
The Post Office Protocol is pretty simple and does not store any
meta-data about the messages on the server. The only date you could use
is the "Date:" header of the actual emails but that is set by the MUA
and may not be valid.
#!/usr/bin/perl
# UNTESTED
use warnings;
use strict;
use Net::POP3;
my $pop_host = 'pop3.somehost.com';
my $pop_user = 'Padmanabhan';
my $pop_pswd = '********';
# parse_date() is some undefined routine to convert dates
my $too_old = parse_date( '1 Nov 2003' );
my $pop = Net::POP3->new( $pop_host );
my $num = $pop->login( $pop_user, $pop_pswd )
or die "Cannot login to $pop_host";
my $list = $pop->list();
for my $mesg ( keys %$list ) {
my $headers = $pop->top( $mesg );
my $date;
for ( @$headers ) {
last if ( $date ) = /^Date:\s+(.+)/;
}
if ( defined( $date ) and parse_date( $date ) < $too_old ) {
$pop->delete( $mesg );
}
}
$pop->quit();
__END__
John
--
use Perl;
program
fulfillment
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]