Mail mit Attachment versenden
Mime::Lite ist wohl die bequemste Möglichkeit, um aus Perl-Scripts heraus einigermaßen ordentlich MIME-codierte Mails mit Anhang zu versenden.
#!/usr/bin/perl -w use strict; use diagnostics; use MIME::Lite; use File::Basename; my $absender = 'Alice <alice@thisdomain.invalid>'; my $empfaenger = 'Bob <bob@otherdomain.invalid>'; my $datei = "/home/alice/info.pdf"; my $smtphost = "127.0.0.1"; my $smtpport = 25; my $betreff = "Demo Dateianhang"; my $anschreiben = <<EOF; Sehr geehrte Damen und Herren, anbei die gewünschten Informationen. EOF # Alternative Aufrufe, siehe unten. MIME::Lite->send('smtp', $smtphost, Port=>$smtpport, Timeout=>5); my $msg = MIME::Lite->new( From => $absender, To => $empfaenger, Subject => $betreff, Type => 'multipart/mixed' ); $msg->attach( Type => 'text/plain; charset=UTF8', Data => $anschreiben ); $msg->attach( Type => 'AUTO', Path => $datei, Filename => basename($datei), Disposition => 'attachment' ); # Leider habe ich immer wieder Probleme, den Rückgabewert # abzufangen; eval funktioniert einigermaßen. my $rc; eval{ $rc = $msg->send(); }; no warnings; if (0 == $rc){ die "Mailing failed!\n"; }
Um eine Mail direkt über den lokalen MTA z.B. per sendmail oder qmail-inject einzuqueuen, würde man MIME::Lite wie folgt konfigurieren:
MIME::Lite->send('sendmail', "/usr/sbin/sendmail -t -oi "); ### (Postfix)
Bzw.
MIME::Lite->send('sendmail', "/var/qmail/bin/qmail-inject -f $absender $emfpaenger"); ### (Qmail)