用C#.NET实现电子邮件客户程序
周华清 戴晟辉(东华理工学院计算机与通信系 江西 抚州 344000)
【摘要】通过C#这种VisualSTudio.NET中新引入的面向对象且类型安全的编程语言,在.NET平台上开发电子邮件客户程序。通过套接字编程实现网络通信连接,阐述SMTP(简单邮件传输协议)和POP3(邮局协议)的工作原理,然后具体讲解了根据SMTP协议开发电子邮件客户端的邮件发送程序,根据POP3协议开发电子邮件客户端的邮件接收程序。
【关键词】套接字 简单邮件传输协议 邮局协议
1 C#中套接字的编程
套接字是通信的基石,是支持TCP/IP协议网络通信的基本操作单元。可以将套接字看做不同主机间的进程进行双向通信的端点,它构成了单个主机内及整个网络间的编程界面。套接字存在于通信域中。通信域是为了处理一般的线程通过套接字通信而引进的一种抽象概念。套接字通常和同一个域中的套接字交换数据(数据交换也可能穿越域的界限,但这时一定要执行某种解释程序)。各种进程使用这个相同的域互相之间用Internet协议簇来进行通信。
针对C#中Socket编程用Socket类来进行,.NET 框架的Socket类是包含在System.Net.Sockets名字空间中的一个非常重要的类,其中为实现网络编程提供了大量的方法。使用Socket类开发windows网络应用程序原来有规可寻,它们在大多数情况下遵循大致相同的步骤。
在使用之前,你需要首先创建Socket对象的实例,这可以通过Socket类的构造方法来实现:
public Socket(AddressFamily addressFamily,SocketType socketType,ProtocolType protocolType);
其中,addressFamily参数指定Socket使用的寻址方案;socketType参数,指定Socket的类型;protocolType参数,指定Socket使用的协议。
下面的示例语句创建一个Socket,它可用于在基于TCP/IP的网络(如Internet)上通讯。
Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
若要使用UDP而不是TCP,需要更改协议类型,如下面的示例所示:
Socket s=newSocket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
一旦创建Socket,在客户端,将可以通过Connect方法连接到指定的服务器,并通过Send/SendTo方法向远程服务器发送数据,而后可以通过Receive/ReceiveFrom方法从服务端接收数据;而在服务器端,你需要使用Bind方法绑定所指定的接口使Socket与一个本地终结点相联,并通过Listen方法侦听该接口上的请求,当侦听到用户端的连接时,调用Accept