'------------------------------------------------------------------------- ' OutlookSendNow.vbs ' ' Beschreibung ' ueberwacht den Postausgang von Outlook auf Nachrichten ' Startet eine Replikation, sobald eine Mail dort drin liegt. ' ' - Laufzeitfehler werde nicht abgefangen und beenden das Skript. ' - keine Behandlung von Fehlversuchen ' - Verbindungsaufbau und Abbau muss Outlook oder der Router/RRAS machen ' - Drosselfunktion. Jeder Sync kostet 10 Punkte. jeder Idle gibt 1 Punkt ' d.h. bei sehr viele Syncs wird irgendwann das Konto verbraucht sein ' und weitere Syncs werden dann gebremst ' - Achtung: Logfile wächst (300k/Tag = 100MB/Jahr) wenn nicht deaktiviert. ' - Das Skript läuft mit den Berechtigungen des angemeldeten Benutzers ' - Outlook muss vorher gestartet sein ' ' (c)2005 Frank Carius ' ' Version 1.0 (15. Jun 2005) ' '------------------------------------------------------------------------- ' Pfad und Dateiname der Log-Datei Option Explicit Dim drossel ' Virtuelle Konto um Kosten beim Amoklauf zu mindern Dim LogFile ' Dim myFolder ' Dim myOlApp ' Dim mySync ' Dim mySyncs ' Const LogLevel = 5 ' errorlogging 0=no logging, 1=Fatal 2=Error 3=Warning 4=information 5=debug Const olFolderOutbox = 4 WScript.Echo WScript.ScriptName & " wurde gestartet." LogFile = "c:\" & WScript.ScriptName & ".log" AppendLog "Skript gestartet", 4 On Error Resume Next Set myOlApp = GetObject(,"Outlook.Application") Select Case Err.number Case 429 WScript.Echo "Outlook ist nicht gestartet. Bitte starten" AppendLog "Outlook ist nicht gestartet !! Bitte starten", 1 WScript.quit(1) Case 0 WScript.Echo "Outlook ist gestartet" AppendLog "Outlook ist gestartet OK", 1 Case Else WScript.Echo "Error" & Err.number AppendLog "Fehler" & Err.number, 1 WScript.quit(1) End Select On Error Goto 0 Set myFolder= myOlApp.GetNameSpace("MAPI").GetDefaultFolder(olFolderOutbox) Set mySyncs = myOlApp.GetNamespace("MAPI").SyncObjects Set mySync = mySyncs.Item(1) drossel=1000 ' Kleines Konto für Syncs Do If (myFolder.Items.Count > 0)AND (drossel >0 ) Then WScript.Echo myFolder.Items.Count & " Nachrichten gefunden -> Starte Profil: " & mySync.Name AppendLog myFolder.Items.Count & " Nachrichten gefunden -> Starte Profil: " & mySync.Name, 4 mySync.Start drossel = drossel -10 ' 10 Punkte abzug Else WScript.Echo "Keine Nachrichten zu versenden. Konto:"&drossel AppendLog "Keine Nachrichten zu versenden. Konto:"&drossel, 4 drossel = drossel +1 ' ein Durchlauf ohne Sync = 1 Punkt Guthaben End If If drossel >1000 Then drossel = 1000 ' Obergrenze festlegen max 100x Sync auf einmal. WScript.Echo "warte 60 Sekunden Drossel:" & drossel WScript.sleep 60000 Loop Set myOlApp = Nothing Set myFolder = Nothing Set mySyncs = Nothing Set mySync = Nothing AppendLog "Skript beendet", 4 WScript.quit(0) Sub AppendLog(strLog, errlevel) 'Fügt einen Eintrag in die Log-Datei ein Dim file Dim fs If LogLevel>=errlevel Then Set fs = CreateObject("Scripting.FileSystemObject") Set file = fs.OpenTextFile(LogFile, 8, True) file.Write(Now & ",") Select Case errlevel Case 1 file.Write("Fatal Line" & Err.Source) Case 2 file.Write("Error") Case 3 file.Write("Warning") Case 4 file.Write("Information") Case 5 file.Write("Debug") Case Else file.Write("Code:"&errlevel) End Select file.WriteLine(","&strLog) file.Close End If End Sub