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!

Von admin

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert