Ziel: Aus einem Batch Script E-Mails verschicken können ohne vorher Programme installieren oder konfigurieren zu müssen.
Extra: 1-Zeiler
Lösung:
Aus dem Script einen PHP Webmailer fernsteuern. Wenn die Ansprüche nicht zu hoch sind ist diese Lösung in 2, 3 Minuten einsatzbereit und absolut ausreichend.
Einzige Voraussetzung ist hierbei natürlich ein PHP fähiger Webserver. Auf den (Windows) Clients sind keine weiteren Anforderungen gegeben.
Voraussetzung: PHP fähiger Webserver für den Mailer und eine Internetverbindung am Client
Scriptbeispiel:
start "iexplore" "http://php.webserver.de/webmailer.php?submitcode4f3d2s1a&contactname=Testserver 110&subject=Backup fehlgeschlagen&email=edv@iqb.hu-berlin.de&message=Das NAS Backup ist fehlgeschlagen&mailto=hannes.schurig@online.de"
PHP Mailer Code:
Code anzeigenDen Code könnt ihr bequem mit den Links/Rechts Pfeiltasten horizontal bewegen.
<?php $sendMailFeedback = ""; if (isset($_GET['submitcode44gf902jd284'])) { if (trim($_GET['contactname']) == '') { $sendMailFeedback = "no contact name"; } else { $name = trim($_GET['contactname']); } if (trim($_GET['subject']) == '') { $sendMailFeedback = "no subject"; } else { $realsubject = trim($_GET['subject']); $subject = 'PHP Mailer: "'.$realsubject.'"'; } if (trim($_GET['email']) == '') { $sendMailFeedback = "no email"; } else if (!preg_match("/[a-z0-9._+-]*@[a-z0-9._+-]+/", trim($_GET['email']))) { $sendMailFeedback = "no valid email"; } else { $email = trim($_GET['email']); } if (trim($_GET['message']) == '') { $sendMailFeedback = "no message"; } else { if (function_exists('stripslashes')) { $comments = stripslashes(trim($_GET['message'])); } else { $comments = trim($_GET['message']); } } if ($sendMailFeedback=="") { $emailTo = $_GET['mailto']; $datum = date("d.m.Y",$timestamp); $uhrzeit = date("H:i",$timestamp); $body = "\n###############\nPHP Mailer\n###############\n\nVersendet am $datum um $uhrzeit Uhr\nAn: $emailTo \nVon: $name \nEmail: $email \nBetreff: $realsubject \n\nText:\n$comments"; $headers = 'From: PHP Mailer <'.$emailTo.'>' . "\r\n" . 'Reply-To: ' . $email; mail($emailTo, $subject, $body, $headers); $sendMailFeedback = "success"; } } else { $sendMailFeedback = "submitcode missing or wrong"; } echo $sendMailFeedback; ?>
Erläuterung:
Das Batch Script startet den Internet Explorer (bzw. den als Standard eingestellten Browser) mit einer URL als Parameter, die dann also aufgerufen wird.
Da der Prozess
iexplore
angesprochen wird sollte es ein Windows PC mit installiertem Internet Explorer sein. Computer ohne IE oder mit anderem OS müssen den Pfad zu einem Browser einsetzen, der URLs per Parameter annimmt und aufruft.
Die URL ruft das PHP Script auf, das ihr vorher auf einen Webserver geparkt habt.
Mein erster Parameter ist so etwas wie ein Passwort. Damit nicht jeder im Web diesen Webmailer einfach so gebrauchen kann wird im PHP Code ganz am Anfang mit
if(isset($_GET['submitcode4f3d2s1a'])) {
überprüft, ob ein bestimmter Parameter gesetzt ist, den am besten nur ihr wisst und auch anpassen solltet. Ohne diesen Key funktioniert der Webmailer nicht, gibt ihn also nur bedingt weiter.
Alle weiteren Parameter sind beliebig anpassbar, müssen natürlich den GET Abfragen der PHP entsprechen.
Diese Variante ist also recht flexibel. Ihr könnt den Mailer beliebig anpassen, abspecken, aufrüsten usw.
Beispielnutzung: automatisierte Server Backup Batch Lösung