Here is what I'm currently toying with - it's by no means complete and tested out, but it takes messages from my POP3 server, and stuffs them into a local maildir directory - the "local maildir" part would have to be implemented by you, as you wouldn't store your messages in one of the formats provided by Mail::Box :
#!/usr/bin/perl -w
# Some vestige of local delivery
# For another method, have a look at Mail::LocalDelivery
use strict;
use Net::POP3;
use Mail::Box;
use Mail::Box::Manager;
use Mail::Message;
use Mail::Message::Construct;
# Use ~/.netrc to determine pop3 login and password
use vars qw($host $localmailbase $foldername);
use vars qw($pop3);
use vars qw($mgr $folder);
$host = 'hera.informatik.uni-frankfurt.de';
$localmailbase = "/home/corion/mail/";
$foldername = "informatik";
$mgr = Mail::Box::Manager->new(folderdir => $localmailbase,
default_folder_type => 'maildir',
);
$folder = $mgr->open( folder => $foldername, access => 'rw', create =>
+ 1 );
die "Couldn't open mailfolder '$foldername' : $!\n" unless $folder;
print "Using folder ",$folder->name,"\n";
my %messageIDs;
%messageIDs = map { $_->get("Message-ID"), $_ } ($folder->messages);
$pop3 = Net::POP3->new($host);
my $total = $pop3->login;
die "Error logging into $host" unless defined $total;
# No news is good news
exit unless $total > 0;
my $firstunread = $pop3->last() +1;
for my $message ($firstunread..$total) {
print "Message $message\n";
my $message_lines = $pop3->get($message);
#local *F;
#open F, "< inmail" or die "Couldn't read test message 'inmail' : $!
+\n";
#my $message_store = Mail::Message->read(\*F);
my $message_store = Mail::Message->read($message_lines);
if ($message_store) {
if (defined $messageIDs{$message_store->get("Message-ID")}) {
print "Duplicate, rejected ",$message_store->get("subject"),"\n"
+;
} else {
print "Subject:",$message_store->get("subject"),"\n";
$folder->addMessage( $message_store );
};
};
#close F;
};
die "Couldn't save '$foldername' : $!\n" unless $folder = $folder->wri
+te();
$mgr->close($folder);
perl -MHTTP::Daemon -MHTTP::Response -MLWP::Simple -e ' ; # The
$d = new HTTP::Daemon and fork and getprint $d->url and exit;#spider
($c = $d->accept())->get_request(); $c->send_response( new #in the
HTTP::Response(200,$_,$_,qq(Just another Perl hacker\n))); ' # web
-
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.