Check these fancy Mail::Box and Mail::Folder modules :)
Greetz
Beatnik
... Quidquid perl dictum sit, altum viditur. | [reply] |
Mail::Util should be helpful for you. I never tried it, but looks good to parse the local mailbox.
--
tune | [reply] |
| [reply] [d/l] [select] |
Why not pipe mailspool to md5sum, and compare the checksums ever so often?
-malloc
| [reply] |
Well, this will indeed show a change in the spool, but
it will not quite tell me if there are messages in it.
The md5 check will go off when new mail arrives, but also
when mail is read and removed from the spool. =)
Odie
--
I am a manual signature virus. Copy me please!
| [reply] |
Here's what I wrote to check my POP3 box, mostly stolen
from Lincoln's stellar
Network Programming With Perl.
I added some functionality to make it fetch a message if
I specify -r n.
#!/usr/bin/perl -w
use constant VERSION => '1.03';
use strict;
use Net::POP3;
use Mail::Header;
use Term::ReadPassword;
use Getopt::Long;
use lib ".";
use Config::rc;
my $filename = "~/.mcheckrc";
my $rcfile = new Config::rc( $filename ) or die $Config::rc::Error, "\
+n";
my $host = $rcfile->parm( "host" ) or die "Mail host not specified in
+$filename\n";
my $user = $rcfile->parm( "user" ) or die "User name not specified in
+$filename\n";
my $readno = 0;
GetOptions( "r=i", \$readno );
my $password = read_password( "Password: " ) || exit 0;
my $pop = Net::POP3->new( $host, Timeout=>30 ) or die "Can't connect t
+o $host: $!\n";
my $messages = $pop->login( $user, $password ) or die "Can't log in: "
+, $pop->message, "\n";
my $last = $pop->last;
$messages += 0; # In case it's "OEO" (zero but true)
print "mcheck v", VERSION, ": Inbox has $messages messages (", $messag
+es-$last," new)\n";
if ( ($readno > 0) && ($readno <= $messages) ) {
my $lines = $pop->get($readno);
print @$lines, "\n";
} else {
for my $msgnum (reverse(1..$messages)) {
my $header = $pop->top( $msgnum );
my $parsedhead = Mail::Header->new($header);
chomp( my $subject = $parsedhead->get('Subject'));
chomp( my $from = $parsedhead->get('From'));
$from = clean_from($from);
printf "%4d %-25s %-50s\n", $msgnum, $from, $subject;
} # for
} # else
$pop->quit;
sub clean_from {
local $_ = shift;
/^"([^\"]+)" <\S+>/ && return $1;
/^([^<>]+) <\S+>/ && return $1;
/^\S+ \(([^\)]+)\)/ && return $1;
return $_;
}
Oh yah, it uses a Config::rc module that I've been working
on, but you can just hardcode your server and username if you want.
xoxo,
Andy
%_=split/;/,".;;n;u;e;ot;t;her;c; ". # Andy Lester
'Perl ;@; a;a;j;m;er;y;t;p;n;d;s;o;'. # http://petdance.com
"hack";print map delete$_{$_},split//,q< andy@petdance.com >
| [reply] [d/l] |
Nice hack, but I doubt it will help, unless I install a pop3 server on my localhost. Hardly seems worth the bother, don't you agree? ;)
Odie --
I am a manual signature virus. Copy me please!
| [reply] |
%_=split/;/,".;;n;u;e;ot;t;her;c; ". # Andy Lester
'Perl ;@; a;a;j;m;er;y;t;p;n;d;s;o;'. # http://petdance.com
"hack";print map delete$_{$_},split//,q< andy@petdance.com >
| [reply] |
You need to test the times of your mbox. Accessed after written
= No Mail, written after accessed=NEW Mail. | [reply] |
| [reply] |