当前位置:编程学习 > C#/ASP.NET >>

运用C#实现POP3邮件接收程序(2)

答案:     具体的过程步骤如下:
  
  第一步:打开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)

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,