Problem mit Body

  • Habe da ein Porblem mit meinem Email schreiber...

    Spoiler anzeigen
    [autoit]

    ;
    ;##################################
    ; Include
    ;##################################
    #Include<file.au3>
    ;##################################
    ; Variables
    ;##################################
    $SmtpServer = "smtp.1und1.de" ; address for the smtp-server to use - REQUIRED
    $FromName = "Aussendienst Kevin" ; name from who the email was sent
    $FromAddress = "beispiel@abc.de" ; address from where the mail should come
    $ToAddress = "beispiel@abc.de" ; destination address of the email - REQUIRED
    $Subject = "Userinfo" ; subject from the email - can be anything you want it to be
    $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 = "beispiel@abc.de" ; username for the account used from where the mail gets sent - REQUIRED
    $Password = "********" ; password for the account used from where the mail gets sent - REQUIRED
    $IPPort = 25 ; port used for sending the mail
    $ssl = 0 ; enables/disables secure socket layer sending - put to 1 if using httpS
    $s_ssd = Inputbox ("Wlan Aussendienst Mailer", "Name der SSD" )
    $s_wlanpw = Inputbox ("Wlan Aussendienst Mailer", "Wlan PW" )
    $s_Ver = Inputbox ("Wlan Aussendienst Mailer", "Wlan Verschlüsslung" )
    $s_admin = Inputbox ("Wlan Aussendienst Mailer", "Admin PW" )
    $s_ip = Inputbox ("Wlan Aussendienst Mailer", "IP Range" )
    Dim $Body[5]
    $as_Body[0] = "SSD:"& $s_ssd
    $as_Body[1] = "Wlan PW:"& $s_wlanpw
    $as_Body[2] = "Verschlüsslung:"& $s_Ver
    $as_Body[3] = "Admin PW:"& $s_admin
    $as_Body[4] = "IP Range:"& $s_ip
    ;~ $IPPort=465 ; GMAIL port used for sending the mail
    ;~ $ssl=1 ; GMAILenables/disables secure socket layer sending - put to 1 if using httpS

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

    ;##################################
    ; Script
    ;##################################
    Global $oMyRet[2]
    Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")
    $rc = _INetSmtpMailCom($SmtpServer, $FromName, $FromAddress, $ToAddress, $Subject, $Body, $AttachFiles, $CcAddress, $BccAddress, $Importance, $Username, $Password, $IPPort, $ssl)
    If @error Then
    MsgBox(0, "Error sending message", "Error code:" & @error & " Description:" & $rc)
    EndIf
    ;
    ; 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 $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]
    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

    [/autoit]


    bekomme den fehler

    28) : ==> Expected a "=" operator in assignment statement.:
    $as_Body[0] = "SSD:"& $s_ssd
    $as_Body^ ERROR

    Edit Oscar: Zugangsdaten anonymisiert

    2 Mal editiert, zuletzt von lsc (15. Oktober 2010 um 23:40)

  • Hi,

    Du hast vergessen das Array mit "Dim $as_Body[5]" zu definieren
    Brauchst du "Dim $Body[5]" oder sollte es schon von vornherein "Dim $as_Body[5]" heißen?

    [autoit]

    Dim $Body[5]
    Dim $as_Body[5]
    $as_Body[0] = "SSD:"& $s_ssd
    $as_Body[1] = "Wlan PW:"& $s_wlanpw
    $as_Body[2] = "Verschlüsslung:"& $s_Ver
    $as_Body[3] = "Admin PW:"& $s_admin
    $as_Body[4] = "IP Range:"& $s_ip

    [/autoit]

    Gruß
    CD

    Einmal editiert, zuletzt von Cyberdyne (15. Oktober 2010 um 16:50)

  • Ich hatte den Quellcode vorhin nur überflogen und dabei gesehen, dass das Array nicht definiert war.

    Jetzt hab ichs mir mal ganz genau angeschaut und muß dir sagen, dass die Funktion

    [autoit]


    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)

    [/autoit]


    überhaupt kein Array bei

    [autoit]

    $as_Body

    [/autoit]


    erwartet, sondern ein String!

    Also ersetzt du diesen Abschnitt

    [autoit]

    Dim $Body[5]
    $as_Body[0] = "SSD:"& $s_ssd
    $as_Body[1] = "Wlan PW:"& $s_wlanpw
    $as_Body[2] = "Verschlüsslung:"& $s_Ver
    $as_Body[3] = "Admin PW:"& $s_admin
    $as_Body[4] = "IP Range:"& $s_ip

    [/autoit]


    mit diesem

    [autoit]

    $Body = ""
    $Body &= "SSD:"& $s_ssd & @CRLF
    $Body &= "Wlan PW:"& $s_wlanpw & @CRLF
    $Body &= "Verschlüsslung:"& $s_Ver & @CRLF
    $Body &= "Admin PW:"& $s_admin & @CRLF
    $Body &= "IP Range:"& $s_ip & @CRLF

    [/autoit]

    Die Variable

    [autoit]

    $as_Body

    [/autoit]

    wird, außerhalb der UDF, überhaupt nicht benötigt.

    Teste das mal soweit...

    Gruß
    CD

  • Endlich es geht :)
    VIELEN DANK !!

    Da hätte ich auch drauf kommen können das ich das so schreiben kann mit dem leerzeile

    Muss glaub noch viel lernen :P aber vielen dank schonmal :)