`
isiqi
  • 浏览: 16001075 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

用Visual C#实现POP3邮件接收程序

阅读更多
导读:
  本文通过运用C#来实现一个基于POP3协议的邮件接收程序来向大家展示C#网络编程的功能强大,同时也向大家介绍一下基于POP3协议的电子邮件接收原理。
  首先我向大家介绍邮件接收的基本原理:
  一开始便是客户端与服务器的连接。不过,在客户端连接到服务器之前,注意把端口设为POP3协议默认的110号。
  客户端连接服务器成功后,服务器会返回以下信息:
  +OK……
  字符+OK是POP3协议的返回信息。它的回应信息不像SMTP协议那样用丰富多变的数字表示,只有两个:+OK或者-ERR。其中,+OK表示连接成功,而-ERR则表示连接失败。
  接下来,客户端输入USER
  该命令告诉服务器你的用户名。注意,有些服务器会区分大小写字母的。
  服务器返回+OK后,客户端输入PASS
  服务器返回+OK后,还返回一些邮箱的统计信息,比如:+OK 1 message(s) [1304 byte(s)]
  不同的服务器返回的信息格式不太一样,所以我们可以用STAT命令来查看邮箱的情况。STAT命令的回应中有两个数字,分别表示邮件的数量和邮件的大小。
  如果信箱里有信,就可以用RETR命令来获取邮件的正文。RETR命令的格式为:
  RETR
  如果返回结果第一行是+OK信息,则表示成功。第二行起便是邮件的正文。最后一行和SMTP协议一样,是一个单独的英文句号,表示邮件的结尾部分。
  把邮件存储起来后要用DELE命令删除邮箱中的邮件,否则原有的邮件会继续保留在服务器上,一旦邮件一多,你的邮箱就爆了。DELE命令的格式为:
  DELE
  如果删错了,可以用RSET命令来恢复所有已被删除的邮件。条件是你还没有退出,一旦退出,那就一切Bye Bye了。全部完成以后,输入QU99v命令就可以退出POP3服务器了。
  以上,我简要地向大家介绍了POP3邮件接收的基本过程和原理,下面就是一个运用上面的原理实现的简易的邮件接收程序。在本程序中,我主要用到了两个类:TcpClient类和NetworkStream类。TcpClient类是运用C#进行网络编程的一个非常重要的类,它提供了通过网络连接、发送和接收数据的简单方法,从而实现了网络编程的大大简化。NetworkStream类实现通过网络套接字发送和接收数据的标准.Net框架流机制,它支持对网络数据流的同步和异步访问,是实现网络通讯的重要组成部分。在这里我先给出程序最终的运行效果,图示如下:
  
  
  图1
  具体的过程步骤如下:
  第一步:打开VS.Net,新建一个工程,在项目类型里选择"Visual C#项目",在模板里选择"Windows 应用程序",工程名不妨为"MailReceiver",最后点击"确定"按钮。
  第二步:布置主界面。先往窗体上添加如下控件:六个Label控件、四个TextBox控件、一个RichTextBox控件、一个CheckBox控件、一个ListBox控件以及三个Button控件。各个控件的属性设置如图1所示。
  在设置完图1的各个控件属性后,对主窗体进行合理的布局,则可得到最终的界面示意图如下所示:
  
  
  图2
  第三步:代码编写。首先因为程序中运用到网络编程的一些重要的类,如:TcpClient、NetworkStream,所以在程序的开头处需添加以下名字空间(Namespace):
  using System.Net;
  using System.Net.Sockets;
  using System.IO;
  接着,为我们的类添加以下一些公有的数据成员:
  public TcpClient Server;
  public NetworkStream NetStrm;
  public StreamReader RdStrm;
  public string Data;
  public byte[] szData;
  public string CRLF = "\r\n";
  最后,便是三个按钮的消息响应函数,这三个函数是程序的主体部分。其中Connect按钮的消息响应函数完成了到POP3服务器的连接工作,并根据用户名和密码进行登录。如果一切顺利,则再向服务器发送STAT命令从而获得邮箱中邮件的相关信息:邮件数量和大小,最终完成连接。其函数实现如下:
  private void 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命令,从而取得邮箱的相关信息:邮件数量和大小

本文转自
http://study.qqcf.com/web/224/23972.htm
分享到:
评论

相关推荐

    用Visual C实现POP3邮件接收程序.rar_C po_pop3邮件_发送邮件_邮件接收_閭欢鎺ユ敹

    支持pop3协议,实现pop3邮件接受,用c#语言编写。经过测试合格。

    C#自写的POP3邮件接收程序

    摘要:C#源码,网络相关,POP3,邮件接收 运行环境:Visual Studio2010

    Visual C#网络编程技术与实践源代码

    Visual Studio支持Visual C#,这是通过功能齐全的代码编辑器、项目模板、设计器、代码向导、功能强大且易于使用的调试器以及其他工具实现的。通过.NET Framework类库,可以访问多种操作系统服务和其他有用的精心设计...

    Visual C# 2005程序设计自学手册 随书源码第一部分(共三部)

    3.3.2 使用continue语句的实现程序跳转 60 3.3.3 使用goto语句实现程序跳转 60 3.3.4 使用return语句实现程序跳转 62 3.4 异常处理语句 63 3.4.1 throw语句 63 3.4.2 try-catch语句 64 3.4.3 try-catch...

    定时收取邮件的Windows服务程序

    移除服务. 启动visual stdio 2005的Visual Studio 2005 Command Prompt程序--> installutil /u Pop3Service.exe(如果命令行没有在Pop3Service.exe的目录下,要输入全路径) <br> <br>PS: 关于...

    C#开发典型模块大全

    8.2.4 使用Jmail组件接收邮件 186 8.2.5 邮件发送类的使用 188 8.2.6 使用正则表达式验证邮件格式 190 8.3 设计过程 191 8.3.1 数据库设计 191 8.3.2 系统登录 191 8.3.3 邮件发送实现 192 8.3.4 为...

    C#开发典型模块大全(光盘)第二部分

    8.2.4 使用Jmail组件接收邮件 8.2.5 邮件发送类的使用 8.2.6 使用正则表达式验证邮件格式 8.3 设计过程 8.3.1 数据库设计 8.3.2 系统登录 8.3.3 邮件发送实现 8.3.4 为邮件上传多个附件 8.3.5 邮件接收实现 8.3.6 ...

    C#开发典型模块大全(光盘)

    8.2.4 使用Jmail组件接收邮件 8.2.5 邮件发送类的使用 8.2.6 使用正则表达式验证邮件格式 8.3 设计过程 8.3.1 数据库设计 8.3.2 系统登录 8.3.3 邮件发送实现 8.3.4 为邮件上传多个附件 8.3.5 邮件接收实现 8.3.6 ...

    C#开发典型模块大全(光盘)第一部分

    8.2.4 使用Jmail组件接收邮件 8.2.5 邮件发送类的使用 8.2.6 使用正则表达式验证邮件格式 8.3 设计过程 8.3.1 数据库设计 8.3.2 系统登录 8.3.3 邮件发送实现 8.3.4 为邮件上传多个附件 8.3.5 邮件接收实现 8.3.6 ...

    asp.net知识库

    将 ASP.NET 2.0 应用程序服务配置为使用 SQL Server 2000 或 SQL Server 2005 ASP.NET 2.0 中的数据源控件 使用 ASP.NET 2.0 ObjectDataSource 控件 ASP.NET 2.0 的内部变化 使用SQL Cache Dependency 代替 ...

Global site tag (gtag.js) - Google Analytics