答案: 具体的过程步骤如下:
第一步:打开VS.Net,新建一个工程,在项目类型里选择“Visual C#项目”,在模板里选择“Windows 应用程序”,工程名不妨为“MailReceiver”,最后点击“确定”按钮。
第二步:布置主界面。先往窗体上添加如下控件:六个Label控件、四个TextBox控件、一个RichTextBox控件、一个CheckBox控件、一个ListBox控件以及三个Button控件。各个控件的属性设置如下表所示:
Form1(主窗体)
Text属性
POP3邮件接收程序
MaximizeBox属性
False
Label1
Text属性
POP3 服务器地址:
TextAlign属性
MiddleRight
Label2
Text属性
用户名:
TextAlign属性
MiddleRight
Label3
Text属性
密码:
TextAlign属性
MiddleRight
Label4
Text属性
信息:
TextAlign属性
MiddleLeft
Label5
Text属性
邮件编号:
TextAlign属性
MiddleLeft
Label6
Text属性
状态:
TextAlign属性
MiddleLeft
PopServer、Username、Password、MailNum(TextBox控件)
Text属性
(均为空)
Password的PasswordChar属性
*
Message(RichTextBox控件)
Text属性
(为空)
BackupChBox(CheckBox控件)
Text属性
在邮件服务器上保留备份
Status(ListBox控件)
ItemHeight属性
12
Connect(Button控件)
Text属性
连接
FlatStyle属性
Flat
Disconnect (Button控件)
Text属性
断开连接
FlatStyle属性
Flat
Enabled属性
False
Retrieve(Button控件)
Text属性
收取邮件
FlatStyle属性
Flat
Enabled属性
False
其他属性均可为默认值。在设置完以上的各个控件属性后,对主窗体进行合理的布局,则可得到最终的界面示意图如下所示:
第三步:代码编写。首先因为程序中运用到网络编程的一些重要的类,如:TcpClient、NetworkStream,所以在程序的开头处需添加以下名字空间(Namespace):
using System.Net;
using System.Net.Sockets;
using System.IO;
接着,为我们的类添加以下一些公有的数据成员:
public TcpClient Server;
public NetworkStream NetStrm;
public StreamReader RdStrm;
publicstring Data;
publicbyte[] szData;
publicstring CRLF = "\r\n";
最后,便是三个按钮的消息响应函数,这三个函数是程序的主体部分。其中Connect按钮的消息响应函数完成了到POP3服务器的连接工作,并根据用户名和密码进行登录。如果一切顺利,则再向服务器发送STAT命令从而获得邮箱中邮件的相关信息:邮件数量和大小,最终完成连接。其函数实现如下:
privatevoid Connect_Click(object sender, System.EventArgs e)
{
//将光标置为等待状态
Cursor cr = Cursor.Current;
Cursor.Current = Cursors.WaitCursor;
//用110端口新建POP3服务器连接
Server = new TcpClient(PopServer.Text,110);
Status.Items.Clear();
try
{
//初始化
NetStrm = Server.GetStream();
RdStrm= new StreamReader(Server.GetStream());
Status.Items.Add(RdStrm.ReadLine());
//登录服务器过程
Data = "USER "+ Username.Text+CRLF;
szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray());
NetStrm.Write(szData,0,szData.Length);
Status.Items.Add(RdStrm.ReadLine());
Data = "PASS "+ Password.Text+CRLF;
szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray());
NetStrm.Write(szData,0,szData.Length);
Status.Items.Add(RdStrm.ReadLine());
//向服务器发送STAT命令,从而取得邮箱的相关信息:邮件数量和大小
Data = "STAT"+CRLF;
szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray());
NetStrm.Write(szData,0,szData.Length);
Status.Items.Add(RdStrm.ReadLine());
//改变按钮的状态
Connect.Enabled = false;
Disconnect.Enabled = true;
Retrieve.Enabled = true;
//将光标置回原来的状态
Cursor.Current = cr;
}
catch(InvalidOperationException err)
{
Status.Items.Add("Error: "+err.ToString());
}
}
而Disconnect按钮的消息响应函数则通过向服务器发送QUIT命令来
上一个:C#锐利体验(6.1)
下一个:运用C#实现POP3邮件接收程序(1)