INetSendMail

  • also ich hab dasselbe problem und hab alles mit eingebunden und geh auch mit 1und1.de "on"...

    und bei mir kommt hlat auch derselbe fehlercod(51)

    habt ihr den schion behoben gekriegt???

    bitte um antwort;)


    thx..

    robin

  • Hallo Robin,

    Zitat

    Original von rfey
    also ich hab dasselbe problem und hab alles mit eingebunden und geh auch mit 1und1.de "on"...

    und bei mir kommt hlat auch derselbe fehlercod(51)

    habt ihr den schion behoben gekriegt???

    mit der letzten Version von bernd670 funktioniert es bei mir problemlos. Ich bin auch 1und1-Kunde.

    Happy computing!
    skyteddy

    • Offizieller Beitrag

    Hallo,

    einfach die beiden Funktionen _INetSmtpMailAuth und Base64Encoding in deinen Quellcode kopieren und die Datei INet.au3 includen!

  • Hello again,

    Zitat

    Original von rfey
    ja das ist ja mein prob das es ja nciht klappt ?(

    muss man die au3 datei einfach noch da hinzufügen also in der _INet.au3 oder direkt ganz überschreiben???

    nimm doch einfach Bernds Beispiel und die inet.au3 und ändere die Login-Daten ab und schau ob das funktioniert. Wenn ja, dann erweitere den Code nach Deinen Bedürfnissen.

    Oder wie sieht Dein Code aus?

    Happy computing!
    skyteddy

  • Zitat

    Original von rfey
    ach egal...


    Wer wird denn so schnell aufgeben ;)


    Zitat

    hab mir jetzt ne ganz anderemöglichkeit geschaffen und kombiniere das programm jetzt einfach mit auto mailer;)


    Was ist denn der auto-mailer?

    Happy computing!
    skyteddy

  • wer redet denn von aufgeben hab mir nur nen neuen weg zum ziel gesucht:P

    also cih erklär jetzte infach ma die ganze aufgabe: hab gerade praktikum und meine aufgabe lautete:

    mit autoreader, ein programm das sich automatisch auf dem email server mit dem account einloggt und emails überprüft und diese dann auf dem pc speichert. wenn die mail einen anhang hat sollte dieser in einem extra ordner gespeichert werden und wenn dieser anhang eine pdf datei ist sollte sie ( jetzt kommt autoit^^) in einen anderen ordner verschoben werden.aus diesem ordner wird sie dann mittels batchprint( ein programm das sich im adobe Reader integriert und dann bestimmte ordner nach pdf dateien durchsucht und diese dann atomatisch druckt;)) gedruckt. die gedruckte datei wird dann ine ienen andereordner verschoben damit sie nicht ausversehen ein zweites mal gedruckt wird. ja und jetzt kam der eigentliche teil den ich eig mit autoit lösen wollteaber dann jetzt doch mit autoreader: wenn eine datei gedruckt wurde sollte eine email versendet werden mit dem inhalt wann welche datei gedruckt wurde;)
    da dies ja leider nciht geklappt hat habich einfach mit autoreader(das gegenstück zum autoreader^^(zum automatischem versenden von txt oder andern dateien)) autoit in einenm ordenr eine txt datei erstellt die der reader dann verschickt und der autoit beim nächstem durchgang direkt löscht:P

    naja hoffe ist jetzt nicht zu kompliziert beschrieben^^

  • Hallo,
    einen ganz besonderen Dank für den "Hinweis" auf die $s_first....
    Damit klappt es auch bei einem Notes-Server, wir werden uns jetzt mit scriptgenerierten Mails beglücken können...
    Zuhause, Nachts, an Feiertagen, im Urlaub, einfach immer. Toll.

    Danke für diese Information.

    michael

  • Hallöchen!

    Ich habe ebenfalls die Fehlermeldung Error 51... Script, Inet.au3 von Bernd verwendet mit web.de leider kein Erfolg...

    was kann ich machen??? Ping ist möglich, antwortet auch, wenn ich jedoch mit telnet mal probiere bekomme ich die Meldung 220 smtp.passthru

    Wer kann helfen??? Wie gesagt, script von Bernd genommen und durch eigene Daten ersetzt

    • Offizieller Beitrag

    Hallo,

    kann es sein das Du $s_UName oder $s_PWD falsch angegeben hast!

    Beispiel für web.de
    [autoit]

    #include <INet.au3>

    $s_SmtpServer = "smtp.web.de"
    $s_FromName = "bernd670"
    $s_FromAddress = "bernd670@web.de"
    $s_ToAddress = "bernd670@gmx.de"
    $s_Subject = "My Test UDF"
    $s_UName = "bernd670" ; Benutzername ohne @web.de
    $s_PWD = "<passwort>"
    Dim $as_Body[2]
    $as_Body[0] = "Testing the new email udf"
    $as_Body[1] = "Second Line"
    $Response = _INetSmtpMailAuth ($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_UName, $s_PWD, $s_Subject, $as_Body, "EHLO ")
    ;~ $Response = _INetSmtpMail ($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject, $as_Body)
    $err = @error
    If $Response = 1 Then
    MsgBox(0, "Success!", "Mail sent")
    Else
    MsgBox(0, "Error!", "Mail failed with error code " & $err)
    EndIf

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

    ;===============================================================================
    ;
    ; Function Name: _INetSmtpMailAuth()
    ; Description: Sends an email using SMTP over TCP IP.
    ; Parameter(s): $s_SmtpServer - SMTP server to be used for sending email
    ; $s_FromName - Name of sender
    ; $s_FromAddress - eMail address of sender
    ; $s_ToAddress - Address that email is to be sent to
    ; $s_Username - Username for Authentication (bernd670)
    ; $s_Passwd - Password for Authentication (bernd670)
    ; $s_Subject - Subject of eMail
    ; $as_Body - Single dimension array containing the body of eMail as strings
    ; $s_helo - Helo identifier (default @COMPUTERNAME) sometime needed by smtp server
    ; $s_first - send before Helo identifier (default @CRLF) sometime needed by smtp server
    ; $b_trace - trace on a splash window (default 0 = no trace)
    ; Requirement(s): None
    ; Return Value(s): On Success - Returns 1
    ; On Failure - 0 and sets
    ; @ERROR = 1 - Invalid Parameters
    ; @ERROR = 2 - Unable to start TCP
    ; @ERROR = 3 - Unable to resolve IP
    ; @ERROR = 4 - Unable to create socket
    ; @ERROR = 5x - Cannot open SMTP session
    ; @ERROR = 50x - Cannot send body
    ; @ERROR = 5000 - Cannot close SMTP session
    ; Authors: Original function to send email via TCP - Asimzameer
    ; Conversion to UDF - Walkabout
    ; Correction Helo, timeout, trace - Jpm
    ; Correction send before Helo - Jpm
    ; Include Authentication - bernd670
    ;
    ;===============================================================================
    Func _INetSmtpMailAuth($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Username, $s_Passwd, $s_Subject = "", $as_Body = "", $s_helo = "", $s_first="-1", $b_trace = 0)

    Local $v_Socket
    Local $s_IPAddress
    Local $i_Count
    Local $s_Send[9]
    Local $s_ReplyCode[9];Return code from SMTP server indicating success

    If $s_SmtpServer = "" Or $s_FromAddress = "" Or $s_ToAddress = "" Or $s_Username = "" Or $s_Passwd = "" Or $s_FromName = "" Or StringLen($s_FromName) > 256 Then
    SetError(1)
    Return 0
    EndIf
    If $s_helo = "" Then $s_helo = @ComputerName
    If TCPStartup() = 0 Then
    SetError(2)
    Return 0
    EndIf
    StringRegExp($s_SmtpServer, "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)")
    If @extended Then
    $s_IPAddress = $s_SmtpServer
    Else
    $s_IPAddress = TCPNameToIP($s_SmtpServer)
    EndIf
    If $s_IPAddress = "" Then
    TCPShutdown()
    SetError(3)
    Return 0
    EndIf
    $v_Socket = TCPConnect($s_IPAddress, 25)
    If $v_Socket = -1 Then
    TCPShutdown()
    SetError(4)
    Return (0)
    EndIf

    $s_Send[0] = "HELO " & $s_helo & @CRLF
    If StringLeft($s_helo,5) = "EHLO " Then $s_Send[0] = "EHLO " & $s_helo & @CRLF
    $s_ReplyCode[0] = "250"

    $s_Send[1] = "AUTH LOGIN" & @CRLF
    $s_ReplyCode[1] = "334"
    $s_Send[2] = _Base64Encoding($s_Username) & @CRLF
    $s_ReplyCode[2] = "334"
    $s_Send[3] = _Base64Encoding($s_Passwd) & @CRLF
    $s_ReplyCode[3] = "235"
    $s_Send[4] = "MAIL FROM: <" & $s_FromAddress & ">" & @CRLF
    $s_ReplyCode[4] = "250"
    $s_Send[5] = "RCPT TO: <" & $s_ToAddress & ">" & @CRLF
    $s_ReplyCode[5] = "250"
    $s_Send[6] = "DATA" & @CRLF
    $s_ReplyCode[6] = "354"

    $s_Send[7] = "From: " & $s_FromName & " <" & $s_FromAddress & ">" & @CRLF & _
    "To: " & "<" & $s_ToAddress & ">" & @CRLF & _
    "Subject: " & $s_Subject & @CRLF & _
    "Mime-Version: 1.0" & @CRLF & _
    "Content-Type: text/plain; charset=US-ASCII" & @CRLF & _
    @CRLF
    $s_ReplyCode[7] = ""

    $s_Send[8] = @CRLF & "." & @CRLF
    $s_ReplyCode[8] = "250"

    ; open stmp session
    If _SmtpSend($v_Socket, $s_Send[0], $s_ReplyCode[0], $b_trace, "220", $s_first) Then
    SetError(50)
    Return 0
    EndIf

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

    ; send header
    For $i_Count = 0 To UBound($s_Send) - 2
    If _SmtpSend($v_Socket, $s_Send[$i_Count], $s_ReplyCode[$i_Count], $b_trace) Then
    SetError(50 + $i_Count)
    Return 0
    EndIf
    Next

    ; send body records (a record can be multiline : take care of a subline beginning with a dot should be ..)
    For $i_Count = 0 To UBound($as_Body) - 1
    ; correct line beginning with a dot
    If StringLeft($as_Body[$i_Count], 1) = "." Then $as_Body[$i_Count] = "." & $as_Body[$i_Count]

    If _SmtpSend($v_Socket, $as_Body[$i_Count] & @CRLF, "", $b_trace) Then
    SetError(500 + $i_Count)
    Return 0
    EndIf
    Next

    ; close the smtp session
    $i_Count = UBound($s_Send) - 1
    If _SmtpSend($v_Socket, $s_Send[$i_Count], $s_ReplyCode[$i_Count], $b_trace) Then
    SetError(5000)
    Return 0
    EndIf

    TCPCloseSocket($v_Socket)
    TCPShutdown()
    Return 1
    EndFunc ;==>_INetSmtpMailAuth

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

    ;===============================================================================
    ;
    ; Function Name: _Base64Encoding()
    ; Description: Kodiert eine Zeichenfolge mit dem Base64-Verfahren
    ; (http://de.wikipedia.org/wiki/Base64)
    ; Parameter(s): $String - Zeichenfolge die kodiert werden soll
    ; Requirement(s): None
    ; Return Value(s): Kodierte Zeichenfolge
    ; Authors: bernd670
    ;
    ;===============================================================================
    Func _Base64Encoding ($String)

    $strUmsetzung = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
    $strRetValue = ""

    For $i = 1 To StringLen($String) Step 3
    $strTok = StringMid($String,$i,3)
    Switch StringLen($strTok)
    Case 3
    $iTokVal = (Asc(StringMid($strTok,1,1)) * 256 + _
    Asc(StringMid($strTok,2,1))) * 256 + _
    Asc(StringMid($strTok,3,1))
    $strTokCryt = StringMid($strUmsetzung,(BitAND($iTokVal,63)) + 1,1)
    $iTokVal = BitShift($iTokVal,6)
    $strTokCryt = StringMid($strUmsetzung,(BitAND($iTokVal,63)) + 1,1) & $strTokCryt
    $iTokVal = BitShift($iTokVal,6)
    $strTokCryt = StringMid($strUmsetzung,(BitAND($iTokVal,63)) + 1,1) & $strTokCryt
    $iTokVal = BitShift($iTokVal,6)
    $strTokCryt = StringMid($strUmsetzung,(BitAND($iTokVal,63)) + 1,1) & $strTokCryt
    $strRetValue &= $strTokCryt

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

    Case 2
    $iTokVal = (Asc(StringMid($strTok,1,1)) * 256 + _
    Asc(StringMid($strTok,2,1))) * 256
    $iTokVal = BitShift($iTokVal,6)
    $strTokCryt = StringMid($strUmsetzung,(BitAND($iTokVal,63)) + 1,1)
    $iTokVal = BitShift($iTokVal,6)
    $strTokCryt = StringMid($strUmsetzung,(BitAND($iTokVal,63)) + 1,1) & $strTokCryt
    $iTokVal = BitShift($iTokVal,6)
    $strTokCryt = StringMid($strUmsetzung,(BitAND($iTokVal,63)) + 1,1) & $strTokCryt
    $strRetValue &= $strTokCryt & "="

    Case 1
    $iTokVal = Asc(StringMid($strTok,1,1)) * 65536
    $iTokVal = BitShift($iTokVal,12)
    $strTokCryt = StringMid($strUmsetzung,(BitAND($iTokVal,63)) + 1,1)
    $iTokVal = BitShift($iTokVal,6)
    $strTokCryt = StringMid($strUmsetzung,(BitAND($iTokVal,63)) + 1,1) & $strTokCryt
    $strRetValue &= $strTokCryt & "=="

    EndSwitch
    Next

    Return $strRetValue
    EndFunc

    [/autoit]
  • Hallo Bernd!

    Schön dass du mir antwortest! Find ich richtig Klasse... habe alles korrekt eingeben (also so wie in deinem letzten Beitrag, natürlich mit meinen Daten ist ja klar ;)

    Was ich wie gesagt komisch finde ist auch, dass ich wenn ich per Telnet probiere, folgenden Fehlermeldung bei open smtp.web.de 25 bekomme:
    220 smtp.passthru

    • Offizieller Beitrag

    Hallo,

    bei mir kommt folgende Meldung:

    RapidGet.exe

    Gehst Du evtl. über einen Proxy?

  • Hallo Zusammen,

    wie kann ich eine Email an mehrere Empfänger schicken? Geht das irgendwie?

    Bernd
    Ist Deine Version von _INetSmtpMail eigentlich ins AutoIt eingeflossen? Ich hab mal auf die Schnelle mein Script mit der in AutoIt enthaltenen _INetSmtpMail enthaltenen compiliert und mein Script hat nicht mehr funktioniert. Hab ich was falsch gemacht oder ist darin deine Fehlerkorrektur "Correction Param $s_first" nicht enthalten?

    Happy computing!
    R@iner

    • Offizieller Beitrag

    Hallo,

    die Funktion _INetSmtpMail in der aktuellen Stable hat immer noch den Fehler!

  • Hallo Bernd,

    die Funktion _INetSmtpMail in der aktuellen Stable hat immer noch den Fehler!

    ich hab es heute Mittag auch nochmal ausprobiert und es geht definitiv nicht mit der 3.2.12.0. :(

    Magste nicht nen bug/feature request im Trac melden? Schließlich hast Du das ja auch gefixt ;)

    Hast Du ne Idee, wie ich ne Email an 2 Empfänger in einem Rutsch schicken kann? Von mir aus auch einen Empfänger im "to:"- und einen mit "cc:"-Feld

    Happy computing!
    R@iner

  • Hast Du ne Idee, wie ich ne Email an 2 Empfänger in einem Rutsch schicken kann? Von mir aus auch einen Empfänger im "to:"- und einen mit "cc:"-Feld

    Hi,

    hat keiner ne Idee, wie man ne Mail an 2 (oder mehr) Empfänger schicken kann?
    Würde mich nämlich auch interessieren.

    Danke und Gruß
    Herra