If StringLen($aTermine[$i][3]) = 4 Then
$sBody &= "0" & $aTermine[$i][3] & " " & $aTermine[$i][4] & "<br>" ; PLZ Ort 4 stellig mit 0
Else
$sBody &= $aTermine[$i][3] & " " & $aTermine[$i][4] & "<br>" ; PLZ Ort 5 stellig
Endif
Das kannst du auch viel einfacher machen:
$sBody &= StringRight("0" & $aTermine[$i][3], 5) & " " & $aTermine[$i][4] & "<br>" ; PLZ Ort immer 5-stellig, anderfalls mit führender 0: Bsp.: 2151 ===>>> 02151
Local $Meldung = GUICtrlCreateLabel("", $Poslinks - 150, $Poshoch +500, 550, 30)
Local $Meldung = GUICtrlCreateLabel("Mail versendet an " &$Mailadress , $Poslinks - 100, $Poshoch + 500, 600, 30)
Hier verwendest du für beide Labels dieselbe Variable... das macht keinen Sinn! Zudem sind sie die beiden Zeilen an dieser Stelle schlecht platziert... denn du willst die Labels ja sicher nicht in der Outlook-GUI erzeugen, was so auch nicht ginge, oder?
Die Labels werden somit bei jedem Funktionsaufruf erzeugt... die erzeugt man vorher. Dann brauchst du in der Funktion _Mail_senden() nur den den Status und den Text entsprechend setzen.
So z.B.:
_OL_ItemSend($oOutlook, $oItem) ; sendet ohne nachfrage
If @error Then
GUICtrlSetState($idMeldung_02, $GUI_SHOW) ; Label anzeigen
GUICtrlSetData($idMeldung_02, "Mail an " & $Mailadress & " konnte nicht gesendet werden!")
GUICtrlSetColor($idMeldung_02, $COLOR_Red)
Sleep(2000)
GUICtrlSetState($idMeldung_02, $GUI_HIDE) ; Label verstecken
Else
GUICtrlSetState($idMeldung_02, $GUI_SHOW) ; Label anzeigen
GUICtrlSetData($idMeldung_02, "Mail versendet an " & $Mailadress)
GUICtrlSetColor($idMeldung_02, $COLOR_Green)
Sleep(2000)
GUICtrlSetState($idMeldung_02, $GUI_HIDE) ; Label verstecken
EndIf
Alles anzeigen
GUISetFont(18) sollte auch nicht in der Funktion _Mail_senden() stehen.
GUICtrlSetColor ($Meldung , $COLOR_Green)
Tja, für welches der beiden Labels wird sich GUICtrlSetColor wohl entscheiden?
Von GUICtrlCreateLabel bekommst du eine Control-ID zurück... das würde ich immer als Kürzel im Variablennamen kenntlich machen:
Local $idMeldung_01 = GUICtrlCreateLabel("", $Poslinks - 150, $Poshoch +500, 550, 30)
Local $idMeldung_02 = GUICtrlCreateLabel("Mail versendet an " &$Mailadress , $Poslinks - 100, $Poshoch + 500, 600, 30)
GUICtrlSetColor($idMeldung_01, $COLOR_Green)
GUICtrlSetColor($idMeldung_02, $COLOR_Green)
Wobei hier der erste Labels keine für mich ersichtliche Funktion hat, denn er zeigt ja keinen Text an...
Mail_senden() ... eigenen Funktionen solltest du immer ein _ voransetzen, damit sie besser von den nativen Funktionen zu unterscheiden sind. Also: _Mail_senden()
Es ist ja schon mal prima, das du deinen Code in Code-Tags setzt... wenn du die Sytax-Hervorhebung nun noch auf AutoIt setzt, bekommst du 100 von 100 möglichen Punkten!
Func _Mail_senden() ;Funtion Mail_senden
Local $oOutlook = _OL_Open()
If @error <> 0 Then Exit MsgBox(16, "OutlookEX UDF", "Error creating a connection to Outlook. @error = " & @error & ", @extended = " & @extended)
Local $sMeineMailadresse = $Mailadress
Local $sBetreff = "Telefonnummern Kunden Tour " & _NowDate()
Local $aTermine = __ParseCSV($Quelldatei, ';') ; <== Name der Eingabedatei hier anpassen!
Local $sBody = "<html><body>"
For $i = 1 To UBound($aTermine) - 1
If $aTermine[$i][0] <> "" Then ; ignoriere leere Zeilen
$sBody &= "<P><b><u>" & $aTermine[$i][1] & "</u></b><br>" ; Vorname Name
$sBody &= $aTermine[$i][2] & "<br>" ; Straße
$sBody &= StringRight("0" & $aTermine[$i][3], 5) & " " & $aTermine[$i][4] & "<br>" ; PLZ Ort 4 stellig mit 0
If $aTermine[$i][5] <> "" Then $sBody &= "Privat: " & $aTermine[$i][5] & "<br>" ; Telefonnr 1
If $aTermine[$i][6] <> "" Then $sBody &= "Firma: " & $aTermine[$i][6] & "<br>" ; Telefonnr 2
If $aTermine[$i][7] <> "" Then $sBody &= "Mobil: " & $aTermine[$i][7] & "<br>" ; Handy
EndIf
Next
$sBody &= "</html></body>"
Local $oItem = _OL_ItemCreate($oOutlook, $olMailItem, "", "", "Subject=" & $sBetreff, "BodyFormat=" & $olFormatHTML, "HTMLBody=" & $sBody)
If @error <> 0 Then Exit MsgBox(16, "", "Item Create: @error = " & @error & ", @extended = " & @extended)
_OL_ItemRecipientAdd($oOutlook, $oItem, Default, $olTo, $sMeineMailadresse)
If @error <> 0 Then Exit MsgBox(16, "", "Recipient Add: @error = " & @error & ", @extended = " & @extended)
;$oItem.display ; zeigt die Mail Kontrolle
_OL_ItemSend($oOutlook, $oItem) ; sendet ohne nachfrage
If @error Then
GUICtrlSetState($idMeldung_02, $GUI_SHOW) ; Label anzeigen
GUICtrlSetData($idMeldung_02, "Mail an " & $Mailadress & " konnte nicht gesendet werden!")
GUICtrlSetColor($idMeldung_02, $COLOR_Red)
Sleep(2000)
GUICtrlSetState($idMeldung_02, $GUI_HIDE) ; Label verstecken
Else
GUICtrlSetState($idMeldung_02, $GUI_SHOW) ; Label anzeigen
GUICtrlSetData($idMeldung_02, "Mail versendet an " & $Mailadress)
GUICtrlSetColor($idMeldung_02, $COLOR_Green)
Sleep(2000)
GUICtrlSetState($idMeldung_02, $GUI_HIDE) ; Label verstecken
EndIf
_OL_ItemSendReceive($oOutlook, True) ; Initiiert die sofortige Zustellung aller nicht zugestellten Nachrichten und den sofortigen Empfang von E-Mails für alle Konten im aktuellen Profil.
_OL_Close($oOutlook)
EndFunc ;==>_Mail_senden
Alles anzeigen