DEFLNG A-Z REM $INCLUDE: 'WinSock2.Dec' REM $INCLUDE: 'Helper.Dec' CONST False = 0 CONST True = NOT False DECLARE FUNCTION GetStr$ (s$) DECLARE FUNCTION SockRecv (BYVAL Sh, Buf$) DECLARE FUNCTION SockSend (BYVAL Sh, Buf$) DIM SHARED CRLF AS STRING DIM W AS WsaData DIM h AS hostent DIM SAin AS sockaddrIn DIM Rc, Rd, V, Re, n$, n, Sh, I, Flags CRLF = CHR$(13) + CHR$(10) ' Per the RFC COLOR 11: CLS PRINT "Check for Email" PRINT V = &H202 ' (byte)minor + (byte)major Rc = WsaStartup(V, W) IF Rc <> 0 THEN PRINT "WsaStartup Rc: ", Rc GOTO CloseIt END IF n$ = "192.168.100.33" ' **** change this to match your system **** PRINT "Trying: [" + n$ + "]" I = inetaddr(n$) ' init address info first SAin.sinFamily = afInet SAin.sinPort = htons(IpPortPOP3) 'SAin.sinAddr.Saddr = I ' not supported in BCET - yet SAin.sinAddr = I SAin.sinZero = STRING$(8, 0) ' was already zeroed out ' get a socket Sh = socket(afInet, SockStream, IpProtoIP) IF Sh = InvalidSocket THEN Rd = WsaGetLastError PRINT "socket WsaGetLastError Rc: ", Rd GOTO CloseIt END IF Rc = connect(Sh, SAin, LEN(SAin)) IF Rc = SocketError THEN Rd = WsaGetLastError PRINT "connect WsaGetLastError Rc: ", Rd GOTO CloseIt END IF ' get the server initial message IF SockRecv(Sh, n$) GOTO CloseIt '''PRINT n$ ' Send USER PRINT "Logging in..." n$ = "USER username" + CRLF ' **** change this to match your system **** IF SockSend(Sh, n$) GOTO CloseIt ' get it back IF SockRecv(Sh, n$) GOTO CloseIt '''PRINT n$ ' send PASS n$ = "PASS password" + CRLF ' **** change this to match your system **** IF SockSend(Sh, n$) GOTO CloseIt ' get it back IF SockRecv(Sh, n$) GOTO CloseIt '''PRINT n$ n$ = MID$(n$, INSTR(1, n$, " ") + 1) n$ = LEFT$(n$, INSTR(1, n$, " ") - 1) PRINT "You have " + n$ + " messages..." ' send QUIT n$ = "quit" + CRLF IF SockSend(Sh, n$) GOTO CloseIt ' get it back IF SockRecv(Sh, n$) GOTO CloseIt '''PRINT n$ CloseIt: Rc = closesocket(Sh) IF Rc <> 0 THEN Rd = WsaGetLastError PRINT "closesocket WsaGetLastError Rc: ", Rd END IF Rc = WsaCleanup IF Rc <> 0 THEN Rd = WsaGetLastError PRINT "WsaCleanup WsaGetLastError Rc: ", Rd END IF END FUNCTION GetStr$ (s$) GetStr$ = LEFT$(s$, INSTR(s$, CHR$(0)) - 1) END FUNCTION FUNCTION SockRecv (BYVAL Sh, Buf$) DIM Flags, Rc, Rd Buf$ = SPACE$(512) Flags = 0 Rc = recv(Sh, Buf$, LEN(Buf$), Flags) IF Rc = SocketError THEN Rd = WsaGetLastError PRINT "recv WsaGetLastError Rc: ", Rd SockRecv = True ELSE Buf$ = LEFT$(Buf$, Rc) IF RIGHT$(Buf$, 2) = CRLF THEN Buf$ = LEFT$(Buf$, Rc - 2) END IF END FUNCTION FUNCTION SockSend (BYVAL Sh, Buf$) DIM Flags, Rc, Rd Flags = 0 Rc = send(Sh, Buf$, LEN(Buf$), Flags) IF Rc = SocketError THEN Rd = WsaGetLastError PRINT "send WsaGetLastError Rc: ", Rd SockSend = True ELSE SockSend = False END IF END FUNCTION