#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_outfile=sende_email.exe
#AutoIt3Wrapper_Change2CUI=y
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
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 $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")
Case "/?", "?", "-?", "help", "-help", "/help"
Case "gui", "/gui", "-gui"
If $CmdLine[$i] = "" Then Exit mbparam(1)
For $i = 1 To $CmdLine[0]
For $i = $CmdLine[0]+1 To 14
If FileExists(_PathFull($Cmd[5])) Then
$read_txt = FileOpen($Cmd[5],0)
$Cmd[5] = FileRead($read_txt)
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])
ConsoleWrite("Fehler beim Versenden der Nachricht"&@CRLF&"Fehlercode: " & @error & " Beschreibung: " & $rc & @CRLF)
ConsoleWrite(@CRLF&"Die Nachricht an "&$Cmd[2]&" wurde erfolgreich versendet." & @CRLF)
_InetSmtpMailCom ist ein Script von "Jos" aus dem engl. Forum von AutoIt:
http://www.autoitscript.com/forum/index.php?showtopic=23860&hl=_InetSmtpMailCom
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_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 StringRight($as_Body,7) = "</html>" Then
$objEmail.HTMLBody = $as_Body
$objEmail.Textbody = $as_Body & @CRLF
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)
ConsoleWrite('!> Dateianhang wurde nicht gefunden: ' & $S_Files2Attach[$x] & @LF)
$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
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
$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
$objEmail.Configuration.Fields.Update
$objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "High"
$objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "Normal"
Case "Niedrig", "niedrig"
$objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "Low"
EndFunc ;==>_INetSmtpMailCom
$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)
$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")
$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'")
$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")
$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
$gui[15] = GUICtrlCreateInput("", 66, 138, 617, 20); Betreff
$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)
Case $GUI_EVENT_CLOSE, $gui[21]
GUICtrlSetData($gui[17],"")
$file = StringSplit(FileOpenDialog("", @MyDocumentsDir & "\", "alle Dateien (*.*)", 1+4), "|")
$anhang_new &= StringReplace($file[1],'"',"")&";"
For $i = 2 To UBound($file)-1
$anhang_new &= $file[1]&"\"&$file[$i]&";"
GUICtrlSetData($gui[17],StringTrimRight($anhang_new,1))
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
$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[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)
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")
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])
MsgBox(262160,"sende Email","Fehler beim Versenden der Nachricht"&@CRLF&"Fehlercode: " & @error & " Beschreibung: " & $rc & @CRLF)
MsgBox(262208,"sende Email","Die Nachricht wurde erfolgreich versendet.")
ControlClick($gui[0],"",$gui[19])
GUICtrlSetData($gui[20],"Email abschicken")
GUICtrlSetData($gui[21],"Beenden")
GUICtrlSetState($gui[19],$GUI_ENABLE)
GUICtrlSetState($gui[20],$GUI_ENABLE)
GUICtrlSetState($gui[21],$GUI_ENABLE)
Case $gui[9]; Variable Wichtigkeit niedrig festlegen
Case $gui[10]; Variable Wichtigkeit normal festlegen
Case $gui[11]; Variable Wichtigkeit hoch festlegen
GUICtrlSetData($gui[12],"25")
GUICtrlSetData($gui[12],"465")
$HexNumber = Hex($oMyError.number, 8)
$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
"Folgende Parameter sind notwendig ([ ] = optional):"& @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& _
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& _
"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)
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)
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)
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)
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) <> "\"
$sPath = StringLeft($sFullPath, 2)
$sFullPath = StringTrimLeft($sFullPath, 2)
$sPath &= StringLeft($sFullPath, StringInStr($sFullPath, "\") - 1)
ElseIf StringRight($sPath, 1) = ":" Then
$sFullPath = StringTrimLeft($sFullPath, 2)
$sFullPath = $sBasePath & "\" & $sFullPath
Local $aTemp = StringSplit($sFullPath, "\")
Local $aPathParts[$aTemp[0]], $j = 0
If $aTemp[$i] = ".." Then
ElseIf Not ($aTemp[$i] = "" And $i <> $aTemp[0]) And $aTemp[$i] <> "." Then
$aPathParts[$j] = $aTemp[$i]
$sFullPath &= "\" & $aPathParts[$i]
$sFullPath &= $sFullPathConst
If StringInStr($sFullPath, "..") Then $sFullPath = _PathFull($sFullPath)
While StringInStr($sFullPath, ".\")
$sFullPath = StringReplace($sFullPath, ".\", "\")