Variablen bei Script als Dienst

  • Hi,
    ich habe in meinem Script das als Dienst läuft die aufgeführten Variablen eingefügt. Hierbei wird beim Start des Script eine Mail mit einem bestimmten Body verschickt. Dieses wird auch nach erfolgreichem Abschluss gemacht. Doch leider geschieden das nicht so wie es angedacht ist.
    @neu eingefügt=>
    Der Inhalt von $s_Subject wird aus einer *.ini geholt. In diese wird zum Start des Script geschrieben und zwar das erste Subject.

    [autoit]

    IniWrite($file, "005", "5", "Tägliche Datensicherung vom " & _Now() & " hat begonnen.")

    [/autoit]

    Doch dieses Subject wird nicht ausgelesen, sondern es wird das Subject genommen der beim Dienst start benutzt wurde.
    Das gleich geschieht mit $as_Body & $s_AttachFiles zum einen wird nicht der Body geholt und zum anderen nicht der entsprechende Anhang.
    <=
    Ansonsten wird alles ordnungsgemäß abgearbeitet. Dh die Mail wird ordnungsgemäß versendet. Wo liegt mein Fehler oder wie muss es besser gemacht werden.

    Taucher

    Spoiler anzeigen
    [autoit]

    #include "date.au3"
    #include "misc.au3"
    #include "inet.au3"
    #include "file.au3"
    #include "Array.au3"
    #include "String.au3"
    #include "ServiceControl.au3"
    ;
    $file = "C:\ADTG\Datensicherung\nav.zup"
    $vas = "C:\ADTG\Datensicherung\CDR.ini"
    $mal = "C:\ADTG\Datensicherung\Mail.ini"
    Global $pathMain = IniRead($file, "002", "1", "Nichts gefunden")
    Global $pathCompare = IniRead($file, "002", "2", "Nichts gefunden")
    Global $mainFile_A
    Global $compare_A
    ;Mail
    Global $oMyRet[2]
    Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")
    ;Mail
    $iWeekday = _DateToDayOfWeek(@YEAR, @MON, @MDAY)
    $sNewDate = _DateAdd('d', -1, _NowCalcDate()); ein Tag
    $sNewDate = StringReplace($sNewDate, "/", ".")
    $sNewData = _DateAdd('d', -2, _NowCalcDate()); zwei Tage
    $sNewData = StringReplace($sNewData, "/", ".")
    $sNewStart = _DateAdd('d', -3, _NowCalcDate()); drei Tage
    $sNewStart = StringReplace($sNewStart, "/", ".")
    $Ti = @HOUR & ":" & @MIN & ":" & @SEC
    $PROTFILE = IniRead($file, "006", "8", "Nichts gefunden")
    $fehler = IniRead($file, "006", "9", "Nichts gefunden")
    $var = IniReadSection($vas, "001")
    $ftp = IniRead($vas, "004", "1", "Nichts gefunden")
    $user = _StringEncrypt(0, IniRead($file, "001", "1", "Nichts gefunden"), "pass", 1)
    $pw = _StringEncrypt(0, IniRead($file, "001", "2", "Nichts gefunden"), "pass", 1)
    $user_network = _StringEncrypt(0, IniRead($file, "001", "3", "Nichts gefunden"), "pass", 1)
    $pw_Network = _StringEncrypt(0, IniRead($file, "001", "4", "Nichts gefunden"), "pass", 1)
    ;Mail
    $s_SmtpServer = IniRead($file, "005", "1", "Nichts gefunden")
    $s_FromName = IniRead($file, "005", "2", "Nichts gefunden")
    $s_FromAddress = IniRead($file, "005", "3", "Nichts gefunden")
    $s_ToAddress = IniRead($file, "005", "4", "Nichts gefunden")
    $s_Subject = IniRead($file, "005", "5", "Nichts gefunden")
    $as_Body = IniRead($file, "007", "1", "Nichts gefunden")
    $s_AttachFiles = IniRead($file, "005", "7", "Nichts gefunden")
    $s_CcAddress = ""
    $s_BccAddress = IniRead($file, "005", "6", "Nichts gefunden")
    $s_Username = $user
    $s_Password = $pw
    $IPPort = 25
    $ssl = 0
    ;
    While 1
    If IniRead($file, "003", "Zeit", "Nichts gefunden") = _NowTime() Then
    Sleep(1500)
    IniWrite($file, "005", "5", "Tägliche Datensicherung vom " & _Now() & " hat begonnen.")
    Sleep(1500)
    IniWrite($file, "005", "7", "")
    Sleep(1500)
    IniWrite($file, "006", "8", StringLeft(IniRead($file, "006", "8", "error"), 3) & "Log\Ivent_" & _NowDate() & ".prob")
    Sleep(30000)
    $rc = _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject, $as_Body, $s_AttachFiles, $s_CcAddress, $s_BccAddress, $s_Username, $s_Password, $IPPort, $ssl)
    Sleep(1500)
    Sleep(60000)
    IniWrite($file, "005", "7", IniRead($file, "006", "8", "nichts gefunden"))
    Sleep(1500)
    IniWrite($file, "005", "5", "Tägliche Datensicherung vom " & _Now() & " wurde beendet.")
    $rc = _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject, $as_Body, $s_AttachFiles, $s_CcAddress, $s_BccAddress, $s_Username, $s_Password, $IPPort, $ssl)
    EndIf
    sleep(150)
    WEnd
    ;
    Func _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject = "", $as_Body = "", $s_AttachFiles = "", $s_CcAddress = "", $s_BccAddress = "", $s_Username = "", $s_Password = "", $IPPort = 25, $ssl = 0)
    $objEmail = ObjCreate("CDO.Message")
    $objEmail.From = '"' & $s_FromName & '" <' & $s_FromAddress & '>'
    $objEmail.To = $s_ToAddress
    Local $i_Error = 0
    Local $i_Error_desciption = ""
    If $s_CcAddress <> "" Then $objEmail.Cc = $s_CcAddress
    If $s_BccAddress <> "" Then $objEmail.Bcc = $s_BccAddress
    $objEmail.Subject = $s_Subject
    If StringInStr($as_Body, "<") And StringInStr($as_Body, ">") Then
    $objEmail.HTMLBody = $as_Body
    Else
    $objEmail.Textbody = $as_Body & @CRLF
    EndIf
    If $s_AttachFiles <> "" Then
    Local $S_Files2Attach = StringSplit($s_AttachFiles, ";")
    For $x = 1 To $S_Files2Attach[0]
    $S_Files2Attach[$x] = _PathFull($S_Files2Attach[$x])
    If FileExists($S_Files2Attach[$x]) Then
    $objEmail.AddAttachment($S_Files2Attach[$x])
    Else
    $i_Error_desciption = $i_Error_desciption & @LF & 'File not found to attach: ' & $S_Files2Attach[$x]
    SetError(1)
    Return 0
    EndIf
    Next
    EndIf
    $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
    $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = $s_SmtpServer
    $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = $IPPort
    ;Authenticated SMTP
    If $s_Username <> "" Then
    $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
    $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = $s_Username
    $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = $s_Password
    EndIf
    If $ssl Then
    $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
    EndIf
    ;Update settings
    $objEmail.Configuration.Fields.Update
    ; Sent the Message
    $objEmail.Send
    If @error Then
    SetError(2)
    Return $oMyRet[1]
    EndIf
    EndFunc ;==>_INetSmtpMailCom
    ; Com Error Handler
    Func MyErrFunc()
    $HexNumber = Hex($oMyError.number, 8)
    $oMyRet[0] = $HexNumber
    $oMyRet[1] = StringStripWS($oMyError.description, 3)
    ConsoleWrite("### COM Error ! Number: " & $HexNumber & " ScriptLine: " & $oMyError.scriptline & " Description:" & $oMyRet[1] & @LF)
    SetError(1); something to check for when this function returns
    Return
    EndFunc ;==>MyErrFunc

    [/autoit]

    :P Streite nie mit einem Idioten
    Erst zieht er dich auf sein Niveau herunter und schlägt dich dort mit seiner Erfahrung :D

    3 Mal editiert, zuletzt von taucher_2006 (27. Januar 2008 um 09:43)