附上代码,在验证用户名和密码的时候密码验证总是返回错误,请教该怎么改?
    private void Connect()
    {
        TcpClient sender = new TcpClient(POPServer, 110);
        Byte[] outbytes;
        string input;
        string readuser = string.Empty;
        string readpwd = string.Empty;
        try
        {
            ns = sender.GetStream();
            sr = new StreamReader(ns);
            sr.ReadLine();
            //检查密码
            input = "USER " + user + "\r\n";
            outbytes = System.Text.Encoding.ASCII.GetBytes(input.ToCharArray());
            ns.Write(outbytes, 0, outbytes.Length);
            readuser = sr.ReadLine();            Array.Clear(outbytes, 0, outbytes.Length);
            input = "PASS " + pwd + "\r\n";
            outbytes = System.Text.Encoding.ASCII.GetBytes(input.ToCharArray());
            ns.Write(outbytes, 0, outbytes.Length);
            readpwd = sr.ReadLine();            //Console.WriteLine(sr.ReadLine() );        }
        catch
        {
            System.Windows.Forms.MessageBox.Show("用户名或密码错误");
        }
    }在红色字体地方运行超慢,一会就返回错误,求解!

解决方案 »

  1.   

    POPServer值是pop.163.com  无效应该出异常了吧?
      

  2.   

    tcpClient = new TcpClient();
    try 

      tcpClient.Connect(sn,Convert.ToInt32(sp,10)); 
    }
    catch 

      Response.Write("不能连接主机:"+sn+"和端口"+sp);
      return;

    你这样试试163是pop3.163.com,110
    可以用pop3来测试连接,如果是接收邮件,使用pop3协议需要base64转码,请考虑使用jmail或别的组件
      

  3.   

    try 

      tcpClient.Connect(sn,Convert.ToInt32(sp,10)); 

    catch 

      Response.Write("不能连接主机:"+sn+"和端口"+sp); 
      return; 

    这么些也是一个效果,到验证完密码的是偶还是返回-ERR,验证用户名的时候是返回+OK,应该不是服务器的问题吧?
      

  4.   

    亲爱的用户朋友:    自2006年11月16日起,网易免费邮件系统的POP3及SMTP服务将暂停开通,此前已经开通POP3及SMTP服务的邮箱帐号则不受影响,仍然可以正常使用。    对此如有任何疑问, 请通过网易在线客服提交你的问题。网易邮件中心
    2006年11月15日
      

  5.   

    我的163邮箱比较早
    我现在通过pop3.163.com+110是可以监控邮箱的
    要不你先再试下pop3.sina.com.cn+110
    如果还不中的话,可以试试
    private void test(string sn,string sp,string un, string pw)
    {
    tcpClient = new TcpClient();
    try 

    tcpClient.Connect(sn,Convert.ToInt32(sp,10)); 
    }
    catch 

    Response.Write("不能连接主机:"+sn+"和端口"+sp);
    return;
    //throw new Exception("不能连接主机:"+sn+"和端口"+sp);
    }  //从邮件服务器获得相应 
    netStream = tcpClient.GetStream();  if(netStream == null) 

    tcpClient.Close();
    return;

    string returnMsg=ReadFromNetStream(ref netStream);
    bool isOK=checkForError(returnMsg); 

    //发送用户名信息  WriteToNetStream(ref netStream, "USER "+un); 
    returnMsg=ReadFromNetStream(ref netStream); 
    if(!(isOK=checkForError(returnMsg)))
    {
    netStream.Close();
    tcpClient.Close();
    Response.Write("不存在该用户名!");
    }
    else
    {

    //发送密码信息  WriteToNetStream(ref netStream, "PASS "+pw); 
    returnMsg=ReadFromNetStream(ref netStream); 
    netStream.Close();
    tcpClient.Close();
    if(!(isOK=checkForError(returnMsg)))
    {
    Response.Write("密码错误!");

    else Response.Write("测试连接成功!");
    }
    } /// <summary>
    ///  这个函数用来向网络流写入数据 
    /// </summary>
    /// <param name="NetStream"></param>
    /// <param name="Command"></param> private void WriteToNetStream(ref NetworkStream NetStream, string Command) 

    string stringToSend = Command +"\r\n"; 
    Byte[] arrayToSend = Encoding.ASCII.GetBytes(stringToSend.ToCharArray()); 
    NetStream.Write(arrayToSend, 0, arrayToSend.Length); 
    }  /// <summary>
    /// 这个函数用来从网络流中读取数据 
    /// </summary>
    /// <param name="NetStream"></param>
    /// <returns></returns>
    private String ReadFromNetStream(ref NetworkStream netStream) 

    StringBuilder strReceived= new StringBuilder();
    StreamReader sr= new StreamReader(netStream);
    String strLine =sr.ReadLine();  
    while(strLine==null || strLine.Length==0) 

    strLine = sr.ReadLine(); 

    strReceived.Append(strLine); 

    /*if(sr.Peek()!=-1)
    {
    while ((strLine=sr.ReadLine())!=null) 

    strReceived.Append(strLine); 
    Response.Write("<script> alert('"+strReceived.ToString()+"');</script>");
    }
    }*/
    return strReceived.ToString(); 
    }  /// <summary>
    /// 这个函数用来检测网络流中的错误 
    /// </summary>
    /// <param name="strMessage"></param>
    private bool checkForError(String strMessage) 

    if (strMessage.IndexOf("OK") == -1) return false;
    return true;
    //throw new Exception("ERROR - . Recieved: "+ strMessage); 
    }
      

  6.   

    。net自己的pop3不是很好用
    你可以用这个——
    参考
      

  7.   

    自己搞定了,就是pop/smtp服务的问题~散分