用SOCKET写,登录后,执行LIST命令就会给你一个串。
再根据邮件序号一个个TOP就行了。

解决方案 »

  1.   

    <%@page debug=true%>
    <HTML><HEAD><title>Pop3 mail check</title></HEAD>
    <body bgcolor=white><%if isPostback then
    readMail(host.text,user.text,pass.text)
    else%><form id=calc method=post runat="server"><P>
    Host <asp:TextBox id=host runat="server"></asp:TextBox>
    <P>
    User <asp:TextBox id=user runat="server"></asp:TextBox>
    <P>
    Pass <asp:TextBox TextMode=Password id=pass runat="server"></asp:TextBox><P>
    <asp:Button id=Button1 runat="server" Text="Login"></asp:Button></FORM><%end if%></body></HTML><script language="vb" runat="server">
    Dim tcpC as New system.net.sockets.TcpClient()

    ' send command strings and return the response
    Function SendCommand(byRef netstream as System.Net.Sockets.NetworkStream,byVal sToSend as String)

    Dim bData() as Byte = Encoding.ASCII.GetBytes(sToSend.ToCharArray)
    netstream.Write(bData,0,bData.Length())
    Return GetResponse(netstream)
    End Function

    ' check if there is a response to get and return it
    Function GetResponse(byRef netstream as System.Net.Sockets.NetworkStream)   Dim bytes(tcpC.ReceiveBufferSize) As Byte
          Dim ret as integer = netStream.Read(bytes, 0, bytes.length)
          
          
          
          ' Returns the data received 
          Dim returndata As String = Encoding.ASCII.GetString(bytes)
          return returndata

    End Function

    Function ReadMail(host as string, user as string, pass as string)

    ' initialise objects
    Dim netstream as System.Net.Sockets.NetworkStream

    Dim thisResponse as string

    ' open connection to server
    try
    tcpC.Connect(host,110)
    catch ex as exception 
    response.write("Error connecting to host: " & ex.message & " - Please check your details and try again")
    response.end
    end try

    ' get response
    netstream = tcpC.GetStream()
    thisResponse=GetResponse(netstream)
    ' enter user name
    thisResponse=SendCommand(netstream,"user " & user & vbCrLF) ' enter password
    thisResponse=SendCommand(netstream,"pass " & pass & vbCrLf)

    ' check if logged in ok
    if not left(thisResponse,4)="-ERR" then
    response.write("<font face=courier>Logged in OK <BR>")
    else
    response.write("Error logging in, check your user details and try again<BR>")
    response.write("<P>" & thisresponse)
    response.end
    end ifthisResponse=SendCommand(netstream,"stat" & vbCrLf)
    dim tmpArray() as string
    tmpArray = split(thisResponse," ")dim thisMess as integer
    dim numMess as string = tmpArray(1)response.write("<p><hr>")thisResponse = ""if cint(numMess) > 0 then
    response.write("Messages: " & numMess & "<br>")
    for thisMess = 1 to cint(numMess)
    thisResponse += replace(SendCommand(netstream,"top " & thisMess & " 10" & vbCrLf),vbcrlf,"<br>") next
    else
    response.write("Messages: None" & "<br>")
    end if
    thisResponse += replace(SendCommand(netstream,"stat" & vbCrLf),vbcrlf,"<br>")tmpArray = split(thisResponse,"+OK")Dim msg as integer
    for msg = 1 to tmpArray.length-1 response.write("<h3>#" & msg & "</h1>" & tmpArray(msg) & "<p>")next' close connection
    thisResponse=SendCommand(netstream,"QUIT" & vbCrLF)
    tcpC.close

    End Function

    </script>