读书人

那位高手帮我看看关于pop收邮件的有关

发布时间: 2011-12-10 00:07:34 作者: rapoo

那位高手帮我看看关于pop收邮件的问题!!
string POPServer;
string user;
string pwd;
public POP(){}
public POP(string server, string _user, string _pwd)
{
POPServer = server;
user = _user;
pwd = _pwd;
}
private NetworkStream Connect()
{
TCPClient sender = new TCPClient(POPServer,110);
Byte[] outbytes;
string input;
NetworkStream ns = null;
try{
ns = sender.GetStream();
StreamReader sr = new StreamReader(ns);
Console.WriteLine(sr.ReadLine() );

input = "user " + user + "\r\n ";
outbytes = System.Text.Encoding.ASCII.GetBytes//就是这里
(input.ToCharArray());
ns.Write(outbytes,0,outbytes.Length) ;
Console.WriteLine(sr.ReadLine() );

input = "pass " + pwd + "\r\n ";
outbytes = System.Text.Encoding.ASCII.GetBytes
(input.ToCharArray());
ns.Write(outbytes,0,outbytes.Length) ;
Console.WriteLine(sr.ReadLine() );

return ns;


}
catch(InvalidOperationException ioe){
Console.WriteLine( "Could not connect to mail server ");
return ns;
}
}
public int GetNumberOfNewMessages()
{
Byte[] outbytes;
string input;
try{
NetworkStream ns = Connect();
StreamReader sr = new StreamReader(ns);

input = "stat " + "\r\n ";
outbytes = System.Text.Encoding.ASCII.GetBytes
(input.ToCharArray());
ns.Write(outbytes,0,outbytes.Length);
string resp = sr.ReadLine();
Console.WriteLine(resp);
string[] tokens = resp.Split(new Char[] { ' '});

input = "quit " + "\r\n ";
outbytes = System.Text.Encoding.ASCII.GetBytes
(input.ToCharArray());
ns.Write(outbytes,0,outbytes.Length);
Console.WriteLine(sr.ReadLine());

sr.Close();
ns.Close();
return tokens[1].ToInt32();
}
catch(InvalidOperationException ioe){
Console.WriteLine( "Could not connect to mail server ");
return 0;
}


}
public static void Main()
{
POP pop = new POP( "pop-server ", "loginname ", "password ");
Console.WriteLine( "New Messages = {0} ",
pop.GetNumberOfNewMessages() );
Console.ReadLine();
}
}
以上是从网上找的一段代码
当运行到outbytes = System.Text.Encoding.ASCII.GetBytes
(input.ToCharArray());
是不能再向下运行并且什么都不动了不知道为什么!!!
有没有高手帮我看看呀!

[解决办法]



你的这个代码没有问题,
只要是格式没有错,
就应该可以运行得起来。

不过,在这里说明一下,
在你的代码里面,
可以这样说,
这不算是什么收邮件的代码,
因为你至少没有发送命令字“RETR”,
只能说是一个统计邮件数(stat)的代码。

在你已有的命令字中,
“user”是用来发送登录邮箱的用户名,
“pass”是用来发送登录邮箱的密码,
“stat”是用来统计邮件数的,
“quit”则是退出邮箱的命令。

在这里有一些说明
http://www.cnpaf.net/Class/POP3/0532918532634401.html

收邮件也不是很复杂,
发“retr”命令字把邮件收回来了,
再进行解码,
就可以看到原来所发出去的东西的原样了。
就解码来说,
目前比较常用到的是进行BASE64解码。


读书人网 >C#

热点推荐