附上代码,在验证用户名和密码的时候密码验证总是返回错误,请教该怎么改?
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("用户名或密码错误");
}
}在红色字体地方运行超慢,一会就返回错误,求解!
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("用户名或密码错误");
}
}在红色字体地方运行超慢,一会就返回错误,求解!
try
{
tcpClient.Connect(sn,Convert.ToInt32(sp,10));
}
catch
{
Response.Write("不能连接主机:"+sn+"和端口"+sp);
return;
}
你这样试试163是pop3.163.com,110
可以用pop3来测试连接,如果是接收邮件,使用pop3协议需要base64转码,请考虑使用jmail或别的组件
{
tcpClient.Connect(sn,Convert.ToInt32(sp,10));
}
catch
{
Response.Write("不能连接主机:"+sn+"和端口"+sp);
return;
}
这么些也是一个效果,到验证完密码的是偶还是返回-ERR,验证用户名的时候是返回+OK,应该不是服务器的问题吧?
2006年11月15日
我现在通过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);
}
你可以用这个——
参考