Etwas speziell, kann aber vielleicht der eine oder andere brauchen: Von einem POP3-Server sollen alle Attachments
extrahiert werden und danach die Mails gelöscht werden. Die Anforderung ist hier speziell für die Veröffentlichung
von Content per E-Mail. Es werden per Cron einmal täglich die Anhänge ausgelesen und veröffentlicht.
Ich habe das ganze mit Perl und den beiden Modulen
Mail::POP3Client und
Mail::MboxParser umgesetzt. Diese
müssen vorher per CPAN installiert werden.
Das geht ganz einfach so:
cpan install Mail::POP3Client
cpan install Mail::MboxParser
cpan install Date::Format
Falls ihr cpan das erste mal startet, will es noch konfiguriert werden. Die meisten Einstellungen können einfach per
Return mit dem Standardwert bestätigt werden.
Das Script ist extrem simpel, ohne Fehlerhandling und kann leicht angepasst werden:
#!/usr/bin/perl -w
#Muss vorher per CPAN installiert werden
use Mail::POP3Client;
use Mail::MboxParser::Mail;
use Date::Format;
#USESSL wird z.B. bei GMail gebraucht
my $pop = new Mail::POP3Client (USER => 'user',
PASSWORD => 'pass',
HOST => 'pop.gmail.com',
DEBUG => 1,
USESSL => 1);
print $pop->Message();
for my $i (1 .. $pop->Count) {
my $datetime = time2str('%Y%m%d%H%M%S', time);
my $msg = Mail::MboxParser::Mail->new( [ $pop->Head($i) ],
[ $pop->Body($i) ] );
#Wo sollen die Attachments hin?
$msg->store_all_attachments( path => '/tmp/test', prefix => $datetime );
#Auskommentieren, falls die Mails vom Server gelöscht werden sollen
#$pop->Delete($i);
print $pop->Message();
}
$pop->Close();
Update am 20.02.2009: Timestamp-Prefix für die Dateinamen hinzugefügt. Achtung: Jetzt wird das Paket Date::Format
gebraucht!
Kommentare