TCPIP / SMTP

  • Hallo leute, ich versuche gerade einen kleinen TCP/IP mailsender zu machen...
    Seht euch den code an, er soll eigentlich das gleiche machen, als wenn man sich über telnet mit nem smtp server verbindet, aber irgendwie geht er nicht...

    Spoiler anzeigen
    [autoit]

    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiIPAddress.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>

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

    $Form1 = GUICreate("Anonymous e-mail sender", 625, 443, 192, 124)
    $Label1 = GUICtrlCreateLabel("From", 8, 24, 27, 17)
    $Label2 = GUICtrlCreateLabel("To", 8, 56, 17, 17)
    $Label3 = GUICtrlCreateLabel("IP of targetserver", 8, 80, 85, 17)
    $Label4 = GUICtrlCreateLabel("Data", 8, 104, 27, 17)
    $data = GUICtrlCreateEdit("", 48, 112, 305, 233)
    $from = GUICtrlCreateInput("", 40, 24, 121, 21)
    $to = GUICtrlCreateInput("", 40, 48, 121, 21)
    $ip = _GUICtrlIpAddress_Create($Form1, 104, 80, 130, 21)
    _GUICtrlIpAddress_Set($ip, "0.0.0.0")
    $log = GUICtrlCreateEdit("", 416, 16, 185, 273)
    $go = GUICtrlCreateButton("Send", 48, 376, 75, 25, $WS_GROUP)
    GUISetState(@SW_SHOW)

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

    While 1
    $msg = GUIGetMsg ()
    If $msg = -3 Then Exit
    If $msg = $go Then
    TCPStartup ()
    $socket = TCPConnect (GUICtrlRead ($ip), 25)
    $listen = TCPListen (GUICtrlRead ($ip), 25)
    TCPAccept ($listen)
    Do
    $recv = TCPRecv ($listen, 200000)
    Until $recv <> ""
    GUICtrlSetData ($log, $recv)
    TCPSend ($socket, "helo " & @IPAddress1)
    Do
    $recv = TCPRecv ($listen, 2000000)
    Until $recv <> ""
    GUICtrlSetData ($log, @CRLF & $recv)
    TCPSend ($socket, "mail from: " & GUICtrlRead ($from))
    Do
    $recv = TCPRecv ($listen, 2000000)
    Until $recv <> ""
    GUICtrlSetData ($log, $recv)
    TCPSend ($socket, "rcpt to: " & GUICtrlRead ($to))
    Do
    $recv = TCPRecv ($listen, 2000000)
    Until $recv <> ""
    GUICtrlSetData ($log, $recv)
    TCPSend ($socket, "data")
    Do
    $recv = TCPRecv ($listen, 2000000)
    Until $recv <> ""
    GUICtrlSetData ($log, $recv)
    TCPSend ($socket, GUICtrlRead ($data))
    TCPSend ($socket, @CRLF & "." & @CRLF)
    Do
    $recv = TCPRecv ($listen, 2000000)
    Until $recv <> ""
    GUICtrlSetData ($log, $recv)
    TCPSend ($socket, "QUIT")
    TCPCloseSocket ($socket)
    TCPCloseSocket ($listen)
    TCPShutdown ()
    EndIf
    WEnd

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


    Danke schonmal, das Schwert

    Theorie ist wenn man weiß wie's geht, aber nichts klappt.
    Praxis ist wenn's klappt aber man weiß nicht weiso.

    Bei Microsoft sind Theorie und Praxis vereint: Nichts klappt und keiner weiß wieso ;)

  • Das Schwert
    Guck dir mal die Funktion _InetMail() an,
    Falls du an TCP/Telnet Scheitern solltest!

    Syntax:

    [autoit]


    #include <INet.au3>
    _INetMail ( $s_MailTo, $s_MailSubject, $s_MailBody )

    [/autoit]

    Beispiel:

    [autoit]


    #include <INet.au3>

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

    $Address = InputBox('Address', 'Enter the E-Mail address to send message to')
    $Subject = InputBox('Subject', 'Enter a subject for the E-Mail')
    $Body = InputBox('Body', 'Enter the body (message) of the E-Mail')
    MsgBox(0,'E-Mail has been opened','The E-Mail has been opened and process identifier for the E-Mail client is ' & _INetMail($address, $subject, $body))

    [/autoit]

    Ps: Viel glück beim Telnet-Versuch :D

  • Ja, danke, aber mir geht es drum das ganze selber zu machen...
    Um was draus zu lernen...
    Aber Danke, wenns garnicht klappt dann mach ichs so!

    Theorie ist wenn man weiß wie's geht, aber nichts klappt.
    Praxis ist wenn's klappt aber man weiß nicht weiso.

    Bei Microsoft sind Theorie und Praxis vereint: Nichts klappt und keiner weiß wieso ;)