;-- TIME_STAMP 2020-06-04 12:13:44 v 0.1 #include #include #include Opt('MustDeclareVars', 1) Global $oOutlook, $sMeineMailadresse = '' ; <<<=== Hier die korrekte Adresse angeben! If $sMeineMailadresse = "" Then Exit 99 Global $LCID = Number(_WinAPI_GetVersion()) >= 6.0 ? _WinAPI_GetThreadUILanguage() : _WinAPI_GetThreadLocale() ;~ ConsoleWrite("LocaleInfo --> " & Hex($LCID, 4) & " " & $LCID & " " & _WinAPI_GetLocaleInfo($LCID, $LOCALE_SABBREVCTRYNAME) & " " & _WinAPI_GetLocaleInfo($LCID, $LOCALE_SLANGUAGE) & @LF) ;~ 0407 1031 de-DE German - Germany ;~ 0409 1033 en-US English - United States _Main() Func _Main() ;~ If Not ProcessExists("OUTLOOK.EXE") Then ;~ Run("C:\Program Files (x86)\Microsoft Office\root\Office16\OUTLOOK.EXE") ;~ EndIf ;~ Sleep(2000) Local $bSend If ProcessExists("OUTLOOK.EXE") Then ProcessExists("OUTLOOK.EXE") $oOutlook = _OL_Open() If @error <> 0 Then Exit MsgBox(16, "", "_OL_Open: Error creating a connection to Outlook. @error = " & @error & ", @extended = " & @extended) OnAutoItExitRegister('_Exit') ; ...tu was $bSend = _OL_Mail_senden() ConsoleWrite("@@_Debug_line" & @TAB & @TAB & @ScriptLineNumber & " var: $bSend --> " & $bSend & @LF & "!@ " & @TAB & "#Error: " & @error & @TAB & "#Extended: " & @extended & @LF) If Not ProcessExists("OUTLOOK.EXE") Then ConsoleWrite(@CRLF & @CRLF & @CRLF & "! Starte OUTLOOK.EXE" & @CRLF & @CRLF & @CRLF) Run("C:\Program Files (x86)\Microsoft Office\root\Office16\OUTLOOK.EXE") EndIf Sleep(2000) $oOutlook = _OL_Open() $bSend = _OL_Mail_senden() ConsoleWrite("@@_Debug_line" & @TAB & @TAB & @ScriptLineNumber & " var: $bSend --> " & $bSend & @LF & "!@ " & @TAB & "#Error: " & @error & @TAB & "#Extended: " & @extended & @LF) ; ...tu was Exit EndFunc ;==>_Main Func _OL_Mail_senden() ;Funktion Mail_senden ConsoleWrite('> _OL_Mail_senden()' & @CRLF) Local Enum $eSubject, $eBody, $eCreationTime, $eLastModificationTime, $eSize Local $sBetreff = "Telefonnummern Kunden Tour 1 " & _Now() ; Telefonnummern Kunden Tour 1 04.06.2020 07:47:17 Local $aTermine = [['Tour', 'Vorname Name', 'Straße', 'PLZ', 'Ort', 'Telefonnr 1', 'Telefonnr 2', 'Handy'], _ ['Tour 1', 'Vorname Name 1', 'Straße 1', 'PLZ 1', 'Ort 1', 'Telefonnr 1', 'Telefonnr 2', 'Handy 1']] ; <== Name der Eingabedatei hier anpassen! Local $sBody = "" For $i = 1 To UBound($aTermine) - 1 If $aTermine[$i][0] <> "" Then ; ignoriere leere Zeilen $sBody &= "

" & $aTermine[$i][1] & "
" ; Vorname Name $sBody &= $aTermine[$i][2] & "
" ; Straße $sBody &= StringRight("0" & $aTermine[$i][3], 5) & " " & $aTermine[$i][4] & "
" ; PLZ Ort 4 stellig mit 0 If $aTermine[$i][5] <> "" Then $sBody &= "Privat: " & $aTermine[$i][5] & "
" ; Telefonnr 1 If $aTermine[$i][6] <> "" Then $sBody &= "Firma: " & $aTermine[$i][6] & "
" ; Telefonnr 2 If $aTermine[$i][7] <> "" Then $sBody &= "Mobil: " & $aTermine[$i][7] & "
" ; Handy EndIf Next $sBody &= "" Local $oItem = _OL_ItemCreate($oOutlook, $olMailItem, "", "", "Subject=" & $sBetreff, "BodyFormat=" & $olFormatHTML, "HTMLBody=" & $sBody) If @error Then Return SetError(@error, @extended, MsgBox(16, "", "_OL_ItemCreate: @error = " & @error & ", @extended = " & @extended)) _OL_ItemRecipientAdd($oOutlook, $oItem, Default, $olTo, $sMeineMailadresse) If @error <> 0 Then Return SetError(@error, @extended, MsgBox(16, "", "_OL_ItemRecipientAdd: @error = " & @error & ", @extended = " & @extended)) ;~ $oItem.display ; zeigt die Mail Kontrolle _OL_ItemSend($oOutlook, $oItem) ; sendet ohne nachfrage If @error Then Return SetError(@error, @extended, _ MsgBox(16, "", "_OL_ItemSend: Mail an " & $sMeineMailadresse & " konnte nicht gesendet werden!" & @CRLF & _ "@error = " & @error & ", @extended = " & @extended)) _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. If @error Then Return SetError(@error, @extended, _ MsgBox(16, "", "_OL_ItemSendReceive: Initiierung der sofortige Zustellung fehlgeschlagen!" & @CRLF & _ "@error = " & @error & ", @extended = " & @extended)) ; _OL_ItemSendReceive läuft leider asynchron d.h. es wird nicht auf die Fertigstellung des Befehls gewartet. ; Deshalb warten wir hier und geben Outlook somit etwas Zeit, eine evtl. noch nicht versandte Mail zu versenden. Local $iError, $iExtended, $sFind, $aItemsOutbox, $aItemsInbox, $sMsg, $iIndex, $sInbox = $LCID = 1031 ? "*\Posteingang" : "*\Inbox", $sOutbox = $LCID = 1031 ? "*\Postausgang" : "*\Outbox" ConsoleWrite("+ $sOutbox = " & $sOutbox & @CRLF) ConsoleWrite("+ $sInbox = " & $sInbox & @CRLF) For $i = 1 To 25 Step 1 ; Bei mir erscheint die Mail erst im Posteingang, wenn $i >= 4 ist, aber meistens erst bei 17-18! Sleep(1000) ; _OL_ItemFind($oOL, $vFolder[, $iObjectClass = Default[, $sRestrict = ""[, $sSearchName = ""[, $sSearchValue = ""[, $sReturnProperties = ""[, $sSort = ""[, $iFlags = 0[, $sWarningClick = ""]]]]]]]]) $aItemsInbox = _OL_ItemFind($oOutlook, $sInbox, $olMail, "[Subject]='" & $sBetreff & "'", "", "", "", "", 2) ; EN = *\Inbox $iError = @error $iExtended = @extended $sFind = $sInbox ; @error |3 - Error accessing the specified folder. See @extended for errorcode returned by _OL_FolderAccess ; @extended |4 - Specified folder could not be found. @extended is set to the index of the subfolder in error (1 = root folder) If @error Then ; $olMail nicht im Posteingang! ConsoleWrite(StringFormat('! $i = %2i _OL_ItemFind: Inbox @error = %2i, @extended = %2i, ProcessExists("OUTLOOK.EXE") = %8i\n', $i, @error, @extended, ProcessExists("OUTLOOK.EXE"))) $aItemsOutbox = _OL_ItemFind($oOutlook, $sOutbox, $olMail, "[Subject]='" & $sBetreff & "'", "", "", "", 2) ; EN = *\Outbox $iError = @error $iExtended = @extended $sFind = $sOutbox If @error Then ; $olMail nicht im Postausgang! ConsoleWrite(StringFormat('- $i = %2i _OL_ItemFind: Outbox @error = %2i, @extended = %2i, ProcessExists("OUTLOOK.EXE") = %8i\n', $i, @error, @extended, ProcessExists("OUTLOOK.EXE"))) Else $iIndex = _ArraySearch($aItemsOutbox, $sBetreff, 1, 0, 0, 0, 1, $eSubject) If Not @error Then MsgBox(16, "OutlookEX UDF", "Die Mail mit dem Betreff '" & $sBetreff & "' wurde nicht versandt und befindet sich im Postausgang!" & @CRLF & "($iIndex = " & $iIndex & ")") EndIf EndIf Else $iIndex = _ArraySearch($aItemsInbox, $sBetreff, 1, 0, 0, 0, 1, $eSubject) If $iIndex > -1 Then ConsoleWrite(StringFormat('+ $i = %2i _OL_ItemFind: Inbox $aItemsInbox = %s, ProcessExists("OUTLOOK.EXE") = %8i\n', $i, _ArrayToString($aItemsInbox, ", ", -1, -1, @CRLF), ProcessExists("OUTLOOK.EXE"))) MsgBox(64, "OutlookEX UDF", "Die Mail mit dem Betreff '" & $sBetreff & "' ist angekommen!" & @CRLF & "($iIndex = " & $iIndex & ")") _ArrayDisplay($aItemsInbox, "$aItemsInbox") Return True Else ConsoleWrite(StringFormat('> $i = %2i _OL_ItemFind: Inbox $aItemsInbox = %s, ProcessExists("OUTLOOK.EXE") = %8i\n', $i, _ArrayToString($aItemsInbox, ", ", -1, -1, @CRLF), ProcessExists("OUTLOOK.EXE"))) EndIf EndIf Next If $iError Then MsgBox(16, "OutlookEX UDF", StringFormat("_OL_ItemFind: @error = %i @extended = %i\n$sFind = %s", $iError, $iExtended, $sFind)) Else MsgBox(16, "OutlookEX UDF", "Die Mail mit dem Betreff '" & $sBetreff & "' wurde nicht versandt und befindet sich auch nicht im Postausgang!") EndIf Return False EndFunc ;==>_OL_Mail_senden Func _Exit() Sleep(250) _OL_Close($oOutlook) EndFunc ;==>_Exit