Wer bei bestimmten Ereignissen des Systems per E-Mail benachrichtigt werden will hat unter Windows kein passendes Werkzeug zur Verfügung. Entweder installiert man sich hierzu ein Tool von einem Drittanbieter oder man programmiert sich ein einfaches VBScript, dass E-Mails mit Hilfe der CDO verschickt. Hierbei ist auch die Authentifizierung am Postausgangsserver kein Problem.
VBScript zum E-Mail versenden
option explicit Dim oEmail, oConf Dim authuser, authpass, smtpserver Dim recipient,sender,subject,message authuser="foo" authpass="bla" smtpserver="myservername" recipient="recipient@example.org" sender="sender@example.org" subject="Test E-Mail" message="My Test E-Mail" Set oEmail = CreateObject("CDO.Message") Set oConf = CreateObject("CDO.Configuration") oConf.Fields("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 oConf.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 oConf.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserver") = smtpserver oConf.Fields("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 oConf.Fields("http://schemas.microsoft.com/cdo/configuration/sendusername") = authuser oConf.Fields("http://schemas.microsoft.com/cdo/configuration/sendpassword") = authpass oConf.Fields.Update oEmail.Configuration = oConf oEmail.To = recipient oEmail.From = sender oEmail.ReplyTo = sender oEmail.Subject = subject oEmail.HTMLBody = message oEmail.Send Set oConf = Nothing Set oEmail = Nothing |
Funktions- und Konfigurationsbeschreibung
Allgemeiner Teil
Im allgemeinen Teil werden die Variablen deklariert und mit option explicit fordern wir einen Fehler bei undeklarierten Variablen an.
option explicit Dim oEmail, oConf Dim authuser, authpass, smtpserver Dim recipient,sender,subject,message |
Konfiguration
Die Konfigurationsteil untergliedert sich in zwei Bereiche. Der erste Bereich bezieht sich auf den Server. Der zweite Bereich bezieht sich auf die E-Mail.
authuser="foo" authpass="bla" smtpserver="myservername" |
smtpserver ist der ausgehende E-Mail Server. Damit sich der Client am Server authentifizieren kann benötigen wir noch den Benutzernamen für die Anmeldung (authuser) und das passende Passwort (authpass).
Im E-Mail Konfigurationsbereich werden die für E-Mail typischen Parameter Empfänger, Absender, Betreff und Nachricht definiert.
recipient="recipient@example.org" sender="sender@example.org" subject="Test E-Mail" message="My Test E-Mail" |
Hauptteil
Servereinstellungen
Als erstes erzeugt man die nötigen CDO Objekte Message(oEmail) und Configuration(oConf).
Set oEmail = CreateObject("CDO.Message") Set oConf = CreateObject("CDO.Configuration") |
Danach konfigurieren wir das CDO Objekt Config(oConf) nach unseren Anforderungen.
oConf.Fields("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 oConf.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 oConf.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserver") = smtpserver |
Mit sendusing 2 wird definiert, dass die E-Mail an den Port gesendet werden soll. Der Port und Server werden mit smtpserverport und smtpserver angegeben.
Als nächstes wird die Authentifizierung durch setzten der 1 aktiviert. Wenn keine Authentifizierung benötigt wird, können auch die drei Zeilen weggelassen werden.
oConf.Fields("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 oConf.Fields("http://schemas.microsoft.com/cdo/configuration/sendusername") = authuser oConf.Fields("http://schemas.microsoft.com/cdo/configuration/sendpassword") = authpass |
Danach aktiviert man die Änderungen.
oConf.Fields.Update |
E-Mail Einstellungen
Als erstes werden die Servereinstellungen der E-Mail zugewiesen. Danach werden die für eine E-Mail benötigten Felder mit Werten gefüllt.
oEmail.Configuration = oConf
oEmail.To = recipient
oEmail.From = sender
oEmail.ReplyTo = sender
oEmail.Subject = subject
oEmail.HTMLBody = message |
Zuguterletzt kann die E-Mail gesendet werden.
oEmail.Send |
3 Antworten auf „VBScript zum E-Mail versenden“
moin wenn ich den code mit vbs starte, dann wird keine e mail gesendet, aber es wird kein fehlercode angezeigt
moin…
stimmen die Daten in dem Konfigurationsabschnitt?
authuser="foo"
authpass="bla"
smtpserver="myservername"
recipient="recipient@example.org"
sender="sender@example.org"
subject="Test E-Mail"
message="My Test E-Mail"
Falls ja wären die Protokolle vom E-Mail Server hilfreich.
moin,
und wie kann man das Script erweitern wenn man ein Mail Cluster hat, und der Service wechselseitig läuft? Man müsste vorher prüfen, auf welchem der Server der Port 25 läuft.
Danke für den kleinen Tipp