VisualC#编写实现POP3的程序
1.打开VS.net 2003。
2.创建新的WinForm应用程序。
3.添加命名的空房间
4.主代码
为了防止连接服务器时接口死锁,我启动了另一个线程。
私有void button1_Click(对象发送方,系统。EventArgs e)
{
Thread myThread = new Thread(new ThreadStart(TreadGet));
myThread。start();
}
private void TreadGet()
{
ConnectToServer();
logon server();
gete mail list();
}
//连接到服务器
private void connect to server()
{
this . my client = newtcpclient();
try
{
this . my client . connect(this . servername textbox . text,110);
this . message listbox . items . add("成功连接到服务器");
//初始化网络流,数据通过这个对象读出
ns = this . my client . getstream();
Sr =新的StreamReader(ns);
SW =新StreamWriter(ns);
}
catch(Exception ex)
{
this . message listbox . items . add(ex。消息);
}
}
/验证用户名和密码
private void logon server()
{
result = Sr . readline();
this . message listbox . items . add(结果);
软件。WriteLine(" USER "+this . name textbox . text);
软件。flush();
result = Sr . ReadLine();
if (result.substring (0,3)= "-er ")
{
this . message listbox . items . add("没有这个用户名");
退货;
}
西南。WriteLine(" PASS "+this . passtextbox . text);
软件。flush();
try
{
result = Sr . ReadLine();
}
catch(io exception ioex)
{
this . message listbox . items . add(ioex。消息);
退货;
}
If (result.substring (0,4)= "-err ")
{
this . message listbox . items . add("无法登录,可能会使用户名和密码错误!");
退货;
}
This.messageListBox.Items.Add("成功登录");
}
//获取邮件列表
Private Void Gete Maillist()
{
String from = null;
string subject = null;
软件。WriteLine(" stat ");
软件。flush();
result = Sr . ReadLine();
// MessageBox。显示(结果);
string[]nummessage = result。拆分(“”);
int totalnum=Convert。toint 32(nummessage[1]);
if(total num > 0)
this . message listbox . items . add("你有"+totalnum。ToString()+" mail ");
else
this . message listbox . items . add("邮箱里没有邮件");
for(int I = 1;i4)
{
if(结果。Substring(0,5)= = " From:")
From = result;
if(结果。Substring(0,8)= = " Subject:")
Subject = result;
}
}
this . listbox 1 . items . add(I . ToString()+" "+from+" "+subject);
}
}
私有void button2_Click(对象发送方,系统。EventArgs e)
{
this . listbox 1 . items . clear();
}
参考数据
互联网邮件收集使用Pop3协议。了解Pop3协议有助于我们加深对邮件系统的理解。而且,使用Pop3协议,可以直接telnet到邮件服务器接收邮件。
通常,您可以在telnet Pop3 Server 110之后使用这些命令,不区分大小写,并且不包括密码本身。注意不要让密码回显,验证通过后再允许回显。
用户名用户批准
密码批准成功,然后状态改变。
Apop名称,digest识别一种安全传输密码的方法,成功执行会导致状态转换。请参考RFC 1321。
stat请求服务器发回的邮箱的统计信息,如邮件数量和邮件的总字节数。
UIN处理服务器返回用于指定邮件的ID,如果没有指定,则返回all。
列表处理服务器返回指定消息的大小等。
Retr n处理服务器返回的所有邮件文本。
Dele n处理服务器标签的删除,它实际上是在执行quit命令时被删除的。
Rset处理撤销所有dele命令。
Top,m处理第n封邮件的前m行内容,m必须是自然数。
Noop处理服务器返回肯定的响应。
退出客户端想要结束会话。如果服务器处于“正在处理”状态,它现在将进入“正在更新”状态,并删除那些标记为删除的邮件。如果服务器处于“已批准”状态,当会话结束时,服务器将不会进入“已更新”状态。
使用telnet接收消息的完整示例如下:
telnet pop3Server 110
用户用户名
pass * * * *
stat
list
retr 1
retr 2
...
删除1
删除2
...
退出
0条评论