vyrazeni starych mailu z mailboxu

Libor Pechacek farco na clnet.cz
Úterý Říjen 5 13:33:44 CEST 1999


Martin Lebeda wrote:
> Potreboval bych z mailboxu automaticky vyradit stare polozky, nejlepe podle
> udaju uvedenych v poli 'Date: ' a to nejlepe pomoci nejakeho filtru, kteremu
> bych zadal neco jako "today - 14days" a on by presunul zpravy starsi nez 14 dni
> do jineho souboru.
> 
> Hledal jsem v manualovych strankach programu 'procmail', ale bud jsem se spatne
> dival, nebo to neumi...nasel jsem jen moznosti prohledavani na pritomnost
> textu i pomoci regularnich vyrazu, zadne zminky o datumu.

Zatracovany Perl na to ma Mail::Folder.  K mani ve CPANu.  Pak uz se to
necha celkem snadno.  Vlastne uz mam neco takoveho hotoveho...

#!/usr/bin/perl
use Mail::Folder::Maildir;
use Mail::Folder::Mbox;

my $mfold = new Mail::Folder('maildir',"/home/farco/Maildir") || die
"$!";
my $msgnum = $mfold->first_message;
my $now = time;
my $maxstore=60*60*24;
my @deletethem;

while ($msgnum) {
  $hdr=$mfold->get_header($msgnum) || warn "get_header";
  $dat = new Mail::Field("Date",$hdr->get("Date"));
  if(($now-$dat->time) > $maxstore) {
    print "will delete "; 
    push @deletethem, $msgnum;
  }
  print "$msgnum.header -- ".$dat->time;
  print "  header -- ".$hdr->get("Subject");
  $msgnum = $mfold->next_message($msgnum);
}

$mfold->delete_message(@deletethem);
$mfold->sync;
$mfold->close;


-- 
Libor Pechacek <farco na clnet.cz>; ISO-8859-2 ready
PGP key: http://www.clnet.cz/~farco/pgp.txt
Sign&encryption key ID: 0x5DDE4353
Key fingerprint: E715 733C 8864 2A49 90A4  EAA6 257C CC00 5DDE 4353


Další informace o konferenci Linux