Im Rahmen von OpenStreetMap erstelle ich das eine oder andere Perl-Skript für die Auswertung von Daten zur Visualisierung und Datenkontrolle. In einer anstehenden Aufgabe sollte von dem Tool automatisch eine eMail verschickt werden wenn es zu Problemen kommt.
Diese Aufgabe selber ist nicht ein unüberwindbares Hindernis wenn man sich in der Linux-Welt bewegen würde. Dafür gibt es ausreichend Dokumentationen. Ich bin aber ein Windows-User und da wird das Eis schon etwas dünner. Insbesondere wenn man die Doku gerne in Deutsch haben möchte. Jetzt habe ich es hinbekommen und möchte daher den “einfachen” Weg dahin nicht verschweigen.
Grundlage bildet ein Programm was die Aufgabe des eMail-Versand übernimmt. Da es in Windows kein Standardprogramm hierfür gibt habe ich auf das bekannte sendmail zurückgegriffen und die Windowsversion heruntergeladen.
Dieses Zip-Archiv wurde entpackt (hier: c:\sendmail). In dem Verzeichnis gibt es eine ini-Datei die entsprechend konfiguriert werden muss. Folgende Parameter wurden gesetzt:
; or to IIS's "pickup" directory. (generally C:\Inetpub\mailroot\Pickup) ; emails delivered via IIS's pickup directory cause sendmail to ; run quicker, but you won't get error messages back to the calling ; application.smtp_server=smtp.myprovide.de ; smtp port (normally 25) smtp_port=587 (das ist die Einstellung die ich z.b. auch im Thunderbird gesetzt hätte) ; SMTPS (SSL) support ; auto = use SSL for port 465, otherwise try to use TLS ; ssl = alway use SSL ... ; if your smtp server requires authentication, modify the following two lines auth_username=mein_Benutzername_oder_die_eMail-Adresse auth_password=erzaehle_ich_nicht ....
Mehr ist für sendmail nicht zu machen. Nun kommt das kleine Beispiel-Perl-Skript (die Quelle finde ich gerade nicht wieder :-()
#!/usr/local/bin/perl use Mail::Sendmail; my %mail = ( To => 'to@example.org', From => 'from@example.org', Message => "This is a very short message" ); $mail{auth} = {user=>'myaccount@example.org', password=>"XXXXXX", required=>1 }; $mail{Smtp} = 'smtp.example.de'; print "vor dem sendmail\n"; sendmail(%mail) or die $Mail::Sendmail::error; print "OK. Log says:\n", $Mail::Sendmail::log;
Es kommt das cpan-Paket MIME-Lite (aktuelles Paket ist auf http://search.cpan.org zu finden) aus der Trouchelle.com-Distribution unter ActivePerl 5.10.1 Build 1007 zur Anwendung.
Mit diesen wenigen Zeilen kann ich nun meine eMail automatisch verschicken. Im oberen Teil wird definiert von wonach wo was zu schicken ist und der zweite (wichtige) Teil ist noch anzugeben wo das Script sendmail findet – das ist die Windowspfad-Angabe.
Wenn alles richtig ist, dann sieht das Ergebnis wie folgt aus:
Ich bin zu dem Ergebnis nicht ganz ohne Hilfe durch das Forum der Perl-community.de gekommen. Hierzu sei auf diesen Thread verwiesen.
Hinweis:
Für Schäden die direkt oder indirekt durch die Anwendung dieses Beispiels, wie auch den verwendeten Komponenten, entstehen wird jegliche Haftung ausgeschlossen!