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 >
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.