Bei Fehler E-Mail versenden.

  • Hallo AutoIT- Forum,

    ich hab folgendes Scipt-Problem:
    Das Scipt durchsucht eine Datei auf Fehler - sobald ein Fehler in der Datei gefunden wurde - sollte eine E-Mail geschickt werden!

    Wer kann mir hier weiterhelfen? von Prgrammierung und AutoIt versteh noch nicht sehr viel - bin aber auf dem besten wege...

    Danke & Gruß
    RK :rock:

    Hier das Script:

    ;Suchwort wird definiert
    $word="FEHLER"

    ;zu durchsuchende Datei auswaehlen
    $file = FileOpen("test.txt", 0)

    ;ueberpruefung
    If $file = -1 Then
    MsgBox(0, "Fehler", "Datei konnte nicht gefunden werden oder ist Fehlerhaft!")
    Exit
    EndIf


    ;Liest Zeile fuer Zeile
    While 1
    $line = FileReadLine($file)
    If @error = -1 Then ExitLoop
    if StringInStr(" "&$line,$word)>0 then MsgBox(1, "Error", $line)


    Wend
    FileClose($file)

  • Spoiler anzeigen
    [autoit]

    #include <Inet.au3>
    $fehler = "Fehler"
    $dateipfad = @ScriptDir & "\test.txt"

    [/autoit] [autoit][/autoit] [autoit]

    $s_SmtpServer = "Server z.b. smtp.ispdomain.com"
    $s_FromName = "Abendsernamer"
    $s_FromAddress = "Absender E-Mail Adresse"
    $s_ToAddress = "Empfänger E-Mail Adresse"
    $s_Subject = "Fehlermeldung"
    Dim $as_Body[2]
    $as_Body[0] = "Ein Fehler in aufgetreten."

    [/autoit] [autoit][/autoit] [autoit]

    $file = FileRead($dateipfad)

    [/autoit] [autoit][/autoit] [autoit]

    If StringInStr($file, $fehler) > 0 Then
    $Response = _INetSmtpMail($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject, $as_Body)
    EndIf

    [/autoit]

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Der Code lief bei mir nie was du machen kannst ist evl

    Spoiler anzeigen
    [autoit]

    ;
    ;##################################
    ; Include
    ;##################################
    #Include<file.au3>
    ;##################################
    ; Variables
    ;##################################
    $SmtpServer = "smtp.1und1.de" ; address for the smtp-server to use - REQUIRED
    $FromName = "XXX" ; name from who the email was sent
    $FromAddress = "XXX@lsc-computer.de" ; address from where the mail should come
    $ToAddress = "XXX@lsc-computer.de" ; destination address of the email - REQUIRED
    $Subject = "Wlan Infos" ; subject from the email - can be anything you want it to be
    $AttachFiles = "" ; the file(s) you want to attach seperated with a ; (Semicolon) - leave blank if not needed
    $CcAddress = "k.XXXX@lsc-computer.de" ; address for cc - leave blank if not needed
    $BccAddress = "" ; address for bcc - leave blank if not needed
    $Importance = "Normal" ; Send message priority: "High", "Normal", "Low"
    $Username = "aussendienst@lsc-computer.de" ; username for the account used from where the mail gets sent - REQUIRED
    $Password = "XXXX" ; password for the account used from where the mail gets sent - REQUIRED
    $IPPort = 25 ; port used for sending the mail
    $ssl = 0 ; enables/disables secure socket layer sending - put to 1 if using httpS
    $s_kunde = Inputbox ("Wlan Aussendienst Mailer", "Name des Kunden/Firma" )
    $s_ssd = Inputbox ("Wlan Aussendienst Mailer", "Name der SSD" )
    $s_wlanpw = Inputbox ("Wlan Aussendienst Mailer", "Wlan PW" )
    $s_Ver = Inputbox ("Wlan Aussendienst Mailer", "Wlan Verschlüsslung" )
    $s_admin = Inputbox ("Wlan Aussendienst Mailer", "Admin PW" )
    $s_ip = Inputbox ("Wlan Aussendienst Mailer", "IP Range" )
    $Body = ""
    $Body &= "Kunde/Firma:"& $s_kunde & @CRLF
    $Body &= "SSD:"& $s_ssd & @CRLF
    $Body &= "Wlan PW:"& $s_wlanpw & @CRLF
    $Body &= "Verschlüsslung:"& $s_Ver & @CRLF
    $Body &= "Admin PW:"& $s_admin & @CRLF
    $Body &= "IP Range:"& $s_ip & @CRLF
    ;~ $IPPort=465 ; GMAIL port used for sending the mail
    ;~ $ssl=1 ; GMAILenables/disables secure socket layer sending - put to 1 if using httpS

    [/autoit] [autoit][/autoit] [autoit]

    ;##################################
    ; Script
    ;##################################
    Global $oMyRet[2]
    Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")
    $rc = _INetSmtpMailCom($SmtpServer, $FromName, $FromAddress, $ToAddress, $Subject, $Body, $AttachFiles, $CcAddress, $BccAddress, $Importance, $Username, $Password, $IPPort, $ssl)
    If @error Then
    MsgBox(0, "Error sending message", "Error code:" & @error & " Description:" & $rc)
    EndIf
    ;
    ; The UDF
    Func _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject = "", $as_Body = "", $s_AttachFiles = "", $s_CcAddress = "", $s_BccAddress = "", $s_Importance="Normal", $s_Username = "", $s_Password = "", $IPPort = 25, $ssl = 0)
    Local $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])
    ;~ ConsoleWrite('@@ Debug : $S_Files2Attach[$x] = ' & $S_Files2Attach[$x] & @LF & '>Error code: ' & @error & @LF) ;### Debug Console
    If FileExists($S_Files2Attach[$x]) Then
    ConsoleWrite('+> File attachment added: ' & $S_Files2Attach[$x] & @LF)
    $objEmail.AddAttachment($S_Files2Attach[$x])
    Else
    ConsoleWrite('!> File not found to attach: ' & $S_Files2Attach[$x] & @LF)
    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
    If Number($IPPort) = 0 then $IPPort = 25
    $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
    ; Set Email Importance
    Switch $s_Importance
    Case "High"
    $objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "High"
    Case "Normal"
    $objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "Normal"
    Case "Low"
    $objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "Low"
    EndSwitch
    $objEmail.Fields.Update
    ; Sent the Message
    $objEmail.Send
    If @error Then
    SetError(2)
    Return $oMyRet[1]
    EndIf
    $objEmail=""
    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]


    den nehmen der leuft bei mri muste nur für deine zwekce erweitern

  • Dann hast irgendwas falsch gemacht lsc. Der Code aus dem Beispiel nutze ich sogar bei unserem Firmenmailserver und läuft ohne Probleme.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.