Email senden mit _InetSmtpMailCom via Console / Gui

  • Hallo zusammen,

    ich hab mir mal gedacht, da es doch ab und an Fragen gibt zum Versenden von Emails, dass ich die Vorlage von Jos aus den engl. Forum (Link) mal ein wenig ausbaue.
    Ich hab mal eine Möglichkeit eingebaut Emails via Dos-Console zu versenden sowie eine Gui Option eingebaut.
    Ist bestimmt verbesserungsfähig, aber es funktioniert soweit.
    Inklusive Dateianhänge und Verschlüsselung...
    Hier die sende_email.au3:

    Spoiler anzeigen
    [autoit]

    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_outfile=sende_email.exe
    #AutoIt3Wrapper_UseUpx=n
    #AutoIt3Wrapper_Change2CUI=y
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    ;Konstanten
    Global Const $GUI_EVENT_CLOSE = -3
    Global Const $GUI_CHECKED = 1
    Global Const $GUI_ENABLE = 64
    Global Const $GUI_DISABLE = 128
    Global $anhang_new, $flag, $read_txt, $file, $von, $wichtig, $ssl, $Cmd[15]
    Global $oMyRet[2]
    Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")
    Switch $CmdLine[0]
    Case 0
    gui()
    Case 1
    Switch $CmdLine[1]
    Case "/?", "?", "-?", "help", "-help", "/help"
    Exit mbparam(0)
    Case "gui", "/gui", "-gui"
    gui()
    EndSwitch
    Case 2 To 4
    Exit mbparam(2)
    Case 5 To 14
    For $i = 1 To 5
    If $CmdLine[$i] = "" Then Exit mbparam(1)
    Next
    Case 15 To 1000
    Exit mbparam(3)
    Case Else
    Exit mbparam(1)
    EndSwitch

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

    For $i = 1 To $CmdLine[0]
    $Cmd[$i] = $CmdLine[$i]
    Next
    For $i = $CmdLine[0]+1 To 14
    $Cmd[$i] = ""
    Next

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

    If FileExists(_PathFull($Cmd[5])) Then
    $read_txt = FileOpen($Cmd[5],0)
    $Cmd[5] = FileRead($read_txt)
    FileClose($read_txt)
    EndIf

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

    Global $oMyRet[2]
    Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")
    $rc = _INetSmtpMailCom($Cmd[1], $Cmd[2], $Cmd[3], $Cmd[4], $Cmd[5], $Cmd[6], $Cmd[7], $Cmd[8], $Cmd[9], $Cmd[10], $Cmd[11], $Cmd[12], $Cmd[13], $Cmd[14])
    If @error Then
    ConsoleWrite("Fehler beim Versenden der Nachricht"&@CRLF&"Fehlercode: " & @error & " Beschreibung: " & $rc & @CRLF)
    SetError(1)
    Else
    ConsoleWrite(@CRLF&"Die Nachricht an "&$Cmd[2]&" wurde erfolgreich versendet." & @CRLF)
    SetError(0)
    EndIf
    Exit

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

    #cs
    _InetSmtpMailCom ist ein Script von "Jos" aus dem engl. Forum von AutoIt:
    http://www.autoitscript.com/forum/index.ph…InetSmtpMailCom
    #ce
    Func _INetSmtpMailCom($s_FromAddress, $s_ToAddress, $s_SmtpServer, $s_Subject, $as_Body, $s_FromName = "", $s_Username = "", $s_Password = "", $s_AttachFiles = "", $s_CcAddress = "", $s_BccAddress = "", $s_Importance = "Normal", $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 StringLeft($as_Body,6) = "<html>" And StringInStr($as_Body, "</html>") 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] = StringReplace($S_Files2Attach[$x],'"','')
    If FileExists($S_Files2Attach[$x]) Then
    $objEmail.AddAttachment ($S_Files2Attach[$x])
    If @error = 0 Then ConsoleWrite("Datei erfolgreich angehaengt: "&$S_Files2Attach[$x] & @CRLF)
    Else
    ConsoleWrite('!> Dateianhang wurde nicht gefunden: ' & $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 "Hoch", "hoch"
    $objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "High"
    Case "Normal", "normal"
    $objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "Normal"
    Case "Niedrig", "niedrig"
    $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
    ;
    Func gui()
    Global $gui[22]
    $wichtig = "Normal"
    $ssl = 0
    $gui[0] = GUICreate("sende Email", 700, 550, 193, 115)
    GUICtrlCreateLabel("Von", 8, 10, 23, 17)
    GUICtrlCreateLabel("An", 8, 35, 17, 17)
    GUICtrlCreateLabel("[Cc]", 8, 60, 18, 17)
    GUICtrlCreateLabel("[Bcc]", 8, 85, 25, 15)
    GUICtrlCreateLabel("[Absender-Name]", 340, 10, 90, 17)
    GUICtrlCreateLabel("Smtp-Server", 340, 35, 62, 17)
    GUICtrlCreateLabel("[Anmeldename]", 340, 60, 80, 17)
    GUICtrlCreateLabel("[Passwort]", 340, 85, 55, 17)
    GUICtrlCreateLabel("[Priorität]", 8, 114, 57, 17)
    GUICtrlCreateLabel("[Ip-Port]", 340, 114, 45, 17)
    GUICtrlCreateLabel("[Ssl]", 507, 114, 24, 17)
    GUICtrlCreateLabel("Betreff", 8, 141, 35, 17)
    GUICtrlSetTip(-1,"Betreff:"&@CRLF&"Tragen Sie hier den Betreff Ihrer Email ein")
    GUICtrlCreateLabel("Nachricht", 8, 181, 50, 17)
    GUICtrlSetTip(-1,"Nachricht:"&@CRLF&"hier tragen Sie den Inhalt Ihrer Email ein"&@CRLF&"wenn der Text HTML-formatiert ist, dann wird dieser als HTML-Email versendet"&@CRLF&"dazu muss der Inhalt von '<html>...</html>' eingeschlossen sein."&@CRLF&"eine logische Prüfung der HTML-Konformität erfolgt nicht!!!")
    GUICtrlCreateLabel("[Anhang]", 8, 465, 70, 17)

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

    $gui[1] = GUICtrlCreateInput("", 66, 6, 250, 20); Von
    GUICtrlSetTip(-1,"Von:"&@CRLF&"Geben Sie hier Ihre Email-Adresse an")
    $gui[2] = GUICtrlCreateInput("", 66, 33, 250, 20); An
    GUICtrlSetTip(-1,"An:"&@CRLF&"Geben Sie hier die Email-Adresse des Empfängers an")
    $gui[3] = GUICtrlCreateInput("", 66, 58, 250, 20); CC
    GUICtrlSetTip(-1,"CC:"&@CRLF&"Geben Sie hier die Email-Adresse/n der CC-Empfänger an"&@CRLF&"mehrere Empfänger müssen mit ';' getrennt werden")
    $gui[4] = GUICtrlCreateInput("", 66, 83, 250, 20); BCC
    GUICtrlSetTip(-1,"BCC:"&@CRLF&"Geben Sie hier die Email-Adresse/n der BCC-Empfänger an"&@CRLF&"mehrere Empfänger müssen mit ';' getrennt werden")
    $gui[5] = GUICtrlCreateInput("", 434, 7, 250, 20); Absender-Name
    GUICtrlSetTip(-1,"Absendername:"&@CRLF&"Geben Sie hier den anzuzeigenden Namen an"&@CRLF&"i.d.R. wird dies Ihr Vor- und Nachname sein")
    $gui[6] = GUICtrlCreateInput("", 434, 34, 250, 20); Smtp-Server
    GUICtrlSetTip(-1,"Smtp-Server:"&@CRLF&"Geben Sie hier den Smtp-Server Ihres Email-Postfaches ein")
    $gui[7] = GUICtrlCreateInput("", 434, 59, 250, 20); Anmeldename
    GUICtrlSetTip(-1,"Anmeldename:"&@CRLF&"Geben Sie hier den Benutzernamen Ihres Email-Postfaches ein")
    $gui[8] = GUICtrlCreateInput("", 434, 84, 250, 20,0x0020); Passwort
    GUICtrlSetTip(-1,"Passwort:"&@CRLF&"Geben Sie hier das Passwort Ihres Email-Postfaches ein")

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

    GUIStartGroup()
    $gui[9] = GUICtrlCreateRadio("Niedrig", 83, 113, 59, 17); Wichtigkeit
    GUICtrlSetTip(-1,"Priorität:"&@CRLF&"hier stellen Sie die Priorität auf 'Niedrig'")
    $gui[10] = GUICtrlCreateRadio("Normal", 170, 113, 53, 17); Wichtigkeit
    GUICtrlSetTip(-1,"Priorität:"&@CRLF&"hier stellen Sie die Priorität auf 'Normal'")
    $gui[11] = GUICtrlCreateRadio("Hoch", 256, 113, 49, 17); Wichtigkeit
    GUICtrlSetTip(-1,"Priorität:"&@CRLF&"hier stellen Sie die Priorität auf 'Hoch'")
    GUIStartGroup()
    $gui[12] = GUICtrlCreateInput("25", 434, 112, 41, 20); IP-Port
    GUICtrlSetTip(-1,"Ip-Port:"&@CRLF&"hier können Sie einen Port zum Versenden der Email angeben"&@CRLF&"Für eine SSL-Verbindung müssen Sie möglicherweise einen anderen Port eintragen"&@CRLF&@CRLF&"Standard Ip-Port ist 25"&@CRLF&"Standard Ip-Port SSL ist 465")
    GUIStartGroup()
    $gui[13] = GUICtrlCreateRadio("aktiviert", 538, 113, 65, 17); SSL
    GUICtrlSetTip(-1,"SSL-Verschlüsselung:"&@CRLF&"hier aktivieren sie die SSL-Verschlüsselung"&@CRLF&"beachten Sie, dass nicht jeder Provider SSL-Verschlüsselung unterstützt."&@CRLF&@CRLF&"Standard Ip-Port ist 465.")
    $gui[14] = GUICtrlCreateRadio("deaktiviert", 613, 113, 73, 17); SSL
    GUIStartGroup()
    $gui[15] = GUICtrlCreateInput("", 66, 138, 617, 20); Betreff

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

    $gui[16] = GUICtrlCreateEdit("", 66, 178, 617, 270); Nachricht
    GUICtrlSetTip(-1,"Nachricht:"&@CRLF&"Sie können in dieses Feld auch den Pfad zu einer Datei eintragen,"&@CRLF&"dessen Inhalt als body erscheinen soll.")
    $gui[17] = GUICtrlCreateInput("", 66, 462, 467, 20); Dateianhang
    GUICtrlSetTip(-1,"Anhang auswählen:"&@CRLF&"hier können Sie eine oder mehrere Dateien auswählen, die als Anhang mit versendet werden"&@CRLF&"mit jeder erneuten Auswahl wird die vorherige gelöscht"&@CRLF&"es können mit Hilfe der 'Strg'- und 'Shift'-Taste mehrere Dateien ausgewählt werden" )
    $gui[18] = GUICtrlCreateButton("Anhang auswählen ...",564,462,120,20)
    GUICtrlSetTip(-1,"Anhang auswählen:"&@CRLF&"hier können Sie eine oder mehrere Dateien auswählen, die als Anhang mit versendet werden"&@CRLF&"mit jeder erneuten Auswahl wird die vorherige gelöscht"&@CRLF&"es können mit Hilfe der 'Strg'- und 'Shift'-Taste mehrere Dateien ausgewählt werden" )
    $gui[19] = GUICtrlCreateButton("Eingaben löschen",66,500,150,35)
    $gui[20] = GUICtrlCreateButton("Email abschicken",300,500,150,35)
    $gui[21] = GUICtrlCreateButton("Beenden",534,500,150,35)
    GUICtrlSetState($gui[10],$GUI_CHECKED)
    GUICtrlSetState($gui[14],$GUI_CHECKED)
    GUICtrlSetLimit($gui[9],5)
    GUISetState(@SW_SHOW)
    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE, $gui[21]
    Exit
    Case $gui[18]
    GUICtrlSetData($gui[17],"")
    $anhang_new = ""
    $file = StringSplit(FileOpenDialog("", @MyDocumentsDir & "\", "alle Dateien (*.*)", 1+4), "|")
    If $file[0] = 1 Then
    $anhang_new &= StringReplace($file[1],'"',"")&";"
    ElseIf $file[0] > 1 Then
    For $i = 2 To UBound($file)-1
    $anhang_new &= $file[1]&"\"&$file[$i]&";"
    Next
    EndIf
    GUICtrlSetData($gui[17],StringTrimRight($anhang_new,1))
    Case $gui[19]; löschen
    GUICtrlSetData($gui[1],"")
    GUICtrlSetData($gui[2],"")
    GUICtrlSetData($gui[3],"")
    GUICtrlSetData($gui[4],"")
    GUICtrlSetData($gui[5],"")
    GUICtrlSetData($gui[6],"")
    GUICtrlSetData($gui[7],"")
    GUICtrlSetData($gui[8],"")
    GUICtrlSetState($gui[10],$GUI_CHECKED)
    GUICtrlSetData($gui[12],"25")
    GUICtrlSetState($gui[14],$GUI_CHECKED)
    GUICtrlSetData($gui[15],"")
    GUICtrlSetData($gui[16],"")
    GUICtrlSetData($gui[17],"")
    Case $gui[20]; abschicken
    Local $read[15]
    $read[1] = GUICtrlRead($gui[1]); Von
    $read[2] = GUICtrlRead($gui[2]); An
    $read[3] = GUICtrlRead($gui[3]); CC
    $read[4] = GUICtrlRead($gui[4]); BCC
    $read[5] = GUICtrlRead($gui[5]); Absendername
    $read[6] = GUICtrlRead($gui[6]); Smtp-Server
    $read[7] = GUICtrlRead($gui[7]); Anmeldename
    $read[8] = GUICtrlRead($gui[8]); Passwort
    $read[9] = $wichtig ; Wichtigkeit
    $read[10] = GUICtrlRead($gui[12]); port
    $read[11] = $ssl ; SSL
    $read[12] = GUICtrlRead($gui[15]); Betreff
    $read[13] = GUICtrlRead($gui[16]); Inhalt
    $read[14] = GUICtrlRead($gui[17]); Anhang
    If FileExists(_PathFull($read[13])) Then
    $read_txt = FileOpen($read[13],0)
    $read[13] = FileRead($read_txt)
    FileClose($read_txt)
    EndIf
    Switch ""
    Case $read[1], $read[2], $read[6], $read[12], $read[13]
    MsgBox(262160, 'sende Email', "Es müssen mindestens folgende Felder ausgefüllt sein:"&@CRLF&"Von, An, Smtp-Server, Betreff, Nachricht")
    Case Else
    GUICtrlSetData($gui[20],"Email wird versendet")
    GUICtrlSetData($gui[21],"bitte warten...")
    GUICtrlSetState($gui[19],$GUI_DISABLE)
    GUICtrlSetState($gui[20],$GUI_DISABLE)
    GUICtrlSetState($gui[21],$GUI_DISABLE)
    $rc = _INetSmtpMailCom($read[1],$read[2],$read[6],$read[12],$read[13],$read[5],$read[7],$read[8],$read[14],$read[3],$read[4],$read[9],$read[10],$read[11])
    If @error Then
    MsgBox(262160,"sende Email","Fehler beim Versenden der Nachricht"&@CRLF&"Fehlercode: " & @error & " Beschreibung: " & $rc & @CRLF)
    SetError(1)
    Else
    MsgBox(262208,"sende Email","Die Nachricht wurde erfolgreich versendet.")
    SetError(0)
    ControlClick($gui[0],"",$gui[19])
    EndIf
    GUICtrlSetData($gui[20],"Email abschicken")
    GUICtrlSetData($gui[21],"Beenden")
    GUICtrlSetState($gui[19],$GUI_ENABLE)
    GUICtrlSetState($gui[20],$GUI_ENABLE)
    GUICtrlSetState($gui[21],$GUI_ENABLE)
    EndSwitch
    Case $gui[9]; Variable Wichtigkeit niedrig festlegen
    $wichtig = "Low"
    Case $gui[10]; Variable Wichtigkeit normal festlegen
    $wichtig = "Normal"
    Case $gui[11]; Variable Wichtigkeit hoch festlegen
    $wichtig = "High"
    Case $gui[14]
    $ssl = "0"
    GUICtrlSetData($gui[12],"25")
    Case $gui[13]
    $ssl = "1"
    GUICtrlSetData($gui[12],"465")
    EndSwitch
    WEnd
    EndFunc ;==>gui

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

    ; Com Error Handler
    Func MyErrFunc()
    $HexNumber = Hex($oMyError.number, 8)
    $oMyRet[0] = $HexNumber
    $oMyRet[1] = StringStripWS($oMyError.description, 3)
    mbparam(2)
    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] [autoit][/autoit] [autoit]

    Func mbparam($flag = 0)
    Switch $flag
    Case 0
    ConsoleWrite(@CRLF& _
    "Folgende Parameter sind notwendig ([ ] = optional):"& @CRLF& _
    @CRLF & _
    "sende_email.exe 1 2 3 4 5 [6 7 8 9 10 11 12 13 14]"&@CRLF& _
    StringFormat("%-23s %-25s","1 = Absender-Adresse","(Ihre Email-Adresse)")&@CRLF& _
    StringFormat("%-23s %-25s","2 = Empfaenger-Adresse","(Die Empfaenger Email-Adresse)")&@CRLF& _
    StringFormat("%-23s %-25s","3 = Smtp-Server","(Der SMTP-Server Ihres Email-Kontos)")&@CRLF& _
    StringFormat("%-23s %-25s","4 = Betreff","(Der Betreff der Email)")&@CRLF& _
    StringFormat("%-23s %-25s","5 = Nachricht","(HTML-Mail wenn '<html></html>' vorhanden)") &@CRLF& _
    StringFormat("%-23s %-22s","","(es kann auch der Pfad zu einer Datei angegeben werden.)")&@CRLF& _
    "[optional]"&@CRLF& _
    StringFormat("%-23s %-25s","6 = Absender-Name","(Angezeigter Name)")&@CRLF& _
    StringFormat("%-23s %-25s","7 = Anmeldename","(Ihr Zugangsname i.d.R. Ihre Email-Adresse)")&@CRLF& _
    StringFormat("%-23s %-25s","8 = Passwort","(Ihr Zugangspasswort zu Ihrem Email-Konto)")&@CRLF& _
    StringFormat("%-23s %-25s","9 = Dateianhang","(Pfad zu/r Datei/n, die angehaengt werden soll/en)")&@CRLF& _
    StringFormat("%-23s %-25s","10 = Cc-Adresse/n","(CC-Empfaenger dieser Email)")&@CRLF& _
    StringFormat("%-23s %-25s","11 = Bcc-Adresse/n","(BCC-Empfaenger dieser Email)")&@CRLF& _
    StringFormat("%-23s %-25s","12 = Wichtigkeit","(Standard = 'Normal', (Hoch, Niedrig))")&@CRLF& _
    StringFormat("%-23s %-25s","13 = Port","(Standard = 25)")&@CRLF& _
    StringFormat("%-23s %-25s","14 = SSL","(Standard = 0; aktiviert = 1)")&@CRLF& _
    @CRLF& _
    "Die Parameter muessen in der erwarteten Reihenfolge angegeben werden."&@CRLF& _
    "Angaben mit Leerzeichen sind mit "&'" '&'"'&" einzuchliessen."&@CRLF& _
    "mehrere Empfaenger/Dateien sind mit ';' zu trennen"&@CRLF& _
    "eine grafische Oberflaeche zum Versenden Ihrer Email erhalten Sie mit '/gui'"&@CRLF)
    Case 1
    ConsoleWrite(@CRLF&"!!! Bei der Angabe der Parameter ist ein Fehler aufgetreten !!!" &@CRLF& _
    "Geben Sie nach dem Programmnamen den Parameter /? oder /help an, um eine"&@CRLF& _
    "Uebersicht aller notwendigen/optionalen Parameter zu erhalten."&@CRLF)
    SetError(1)
    $flag = 0
    Case 2
    ConsoleWrite(@CRLF&"!!! Bei der Verarbeitung der Parameter ist ein Fehler aufgetreten !!!" &@CRLF& "Es wurden weniger als 14 Parameter uebergeben!!!"&@CRLF& _
    "Geben Sie nach dem Programmnamen den Parameter /? oder /help an, um eine"&@CRLF& _
    "Uebersicht aller notwendigen/optionalen Parameter zu erhalten."&@CRLF)
    SetError(1)
    $flag = 0
    Case 3
    ConsoleWrite(@CRLF&"!!! Bei der Verarbeitung der Parameter ist ein Fehler aufgetreten !!!" &@CRLF& "Es wurden mehr als 14 Parameter uebergeben!!!"&@CRLF& _
    "Geben Sie nach dem Programmnamen den Parameter /? oder /help an, um eine"&@CRLF& _
    "Uebersicht aller notwendigen/optionalen Parameter zu erhalten."&@CRLF)
    SetError(1)
    $flag = 0
    EndSwitch

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

    EndFunc ;==>mbmparam

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

    Func _PathFull($sRelativePath, $sBasePath = @WorkingDir)
    If Not $sRelativePath Or $sRelativePath = "." Then Return $sBasePath
    Local $sFullPath = StringReplace($sRelativePath, "/", "\") ; Holds the full path (later, minus the root)
    Local Const $sFullPathConst = $sFullPath ; Holds a constant version of the full path.
    Local $sPath ; Holds the root drive/server
    Local $bRootOnly = StringLeft($sFullPath, 1) = "\" And StringMid($sFullPath, 2, 1) <> "\"
    For $i = 1 To 2
    $sPath = StringLeft($sFullPath, 2)
    If $sPath = "\\" Then
    $sFullPath = StringTrimLeft($sFullPath, 2)
    $sPath &= StringLeft($sFullPath, StringInStr($sFullPath, "\") - 1)
    ExitLoop
    ElseIf StringRight($sPath, 1) = ":" Then
    $sFullPath = StringTrimLeft($sFullPath, 2)
    ExitLoop
    Else
    $sFullPath = $sBasePath & "\" & $sFullPath
    EndIf
    Next
    If $i = 3 Then Return ""
    Local $aTemp = StringSplit($sFullPath, "\")
    Local $aPathParts[$aTemp[0]], $j = 0
    For $i = 2 To $aTemp[0]
    If $aTemp[$i] = ".." Then
    If $j Then $j -= 1
    ElseIf Not ($aTemp[$i] = "" And $i <> $aTemp[0]) And $aTemp[$i] <> "." Then
    $aPathParts[$j] = $aTemp[$i]
    $j += 1
    EndIf
    Next
    $sFullPath = $sPath
    If Not $bRootOnly Then
    For $i = 0 To $j - 1
    $sFullPath &= "\" & $aPathParts[$i]
    Next
    Else
    $sFullPath &= $sFullPathConst
    If StringInStr($sFullPath, "..") Then $sFullPath = _PathFull($sFullPath)
    EndIf
    While StringInStr($sFullPath, ".\")
    $sFullPath = StringReplace($sFullPath, ".\", "\")
    WEnd
    Return $sFullPath
    EndFunc ;==>_PathFull

    [/autoit]

    anbei auch eine kompilierte Version.
    Ich habe auf den UPX-Packer verzichtet, da dieser doch immer wieder einen Viren-Software Fehlalarm auslöst.

    Fühlt euch frei das Script zu verwenden, zu verbessern, zu kritisieren, etc ...

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

    2 Mal editiert, zuletzt von Schnuffel (1. August 2010 um 15:37) aus folgendem Grund: Fehlerbehebung im Script Zeile 74 Wenn in der übergebenen Datei am Ende nach </html> noch ein CR oder andere Zeichen kamen, hat die StringRight-Methode versagt '</html> zu finden und die Nachricht als Text verschickt. Durch StringInStr ersetzt

  • ein wenig


    Wenig? OK, hatte noch keine Zeit, das Oroginal anzuschauen, aber da hast du sehr viel Funktionen drinnen. Wäre toll, wenn man die LogIn Daten irgendwo speichern könnte. (Registry, oder besser(weil portabel) eine .ini)

    MfG. tobi_girst

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »tobi_girst« (Morgen, 25:63)

  • du darfst Dich gerne daran versuchen. ;)

    Nachdem der Aufruf aber eher per Batch erfolgt, habe ich bewusst darauf verzichtet.
    Die Gui war eigentlich nur ein "Gimmick" für's Verständnis. 8)

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • Mann könnte ja in den optionen einen iniwrite machen und das input feld von per iniread einlesen bei mehreren inputs so!!

  • Das kapier ich net... kan mir das jemand erklären bitte?


    [autoit]

    $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

    [/autoit]
  • das ist eine lokale Parameter-Datenübergabe an das CDO-Object

    Erklärung ist schwierig.
    Das sieht zwar aus wie eine Internetadresse, wird aber nicht so behandelt.

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)