您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 第19章简单电子邮件的客户端实现
第19章简单电子邮件的客户端实现•当今人们使用电子邮件基本包括Web使用方式和电子邮件客户端软件登录方式。由于客户端软件登录方式无需登录网页,同时可以对信件进行下载,使得以后可以在不上网的情况下阅读历史信件,所以客户端软件登录更加受到人们的喜爱。本章介绍利用VisualC++6.0开发简单电子邮件客户端的基本流程。学习本章,读者可以了解电子邮件的发展过程,掌握电子邮件的基本协议和利用VisualC++6.0进行系统设计的基本流程。19.1概述•随着计算机网络的发展,人与人之间信息传输的时间大为缩短。人们之间越来越多的交流是在网络环境下进行的。例如许多文件都是以电子邮件的形式来传送,人们越来越多地使用QQ等软件进行聊天等。而电子邮件是人们进行信息传输,文件交换的常用工具。通过电子邮件,人们可以进行文字、图片、视频、声音、数据文件等的传递。随着Internet和网的广泛普及,电子邮件的使用迅速增多起来。电子邮件的使用不仅在数量上有突飞猛进的发展,其重要性也日益增加。•电子邮件(简称E-mail)又称为电子信箱或者邮箱,它是一种用电子手段提供信息交换的通信方式。它是当今全球多种网络上使用最普遍的一项服务。与QQ这种及时交互性的通信方式相比,电子邮件这种非交互式的通信,不要求接收方与发送方同时在线。可以说电子邮件是Internet资源使用最多的一种服务。E-mail不只局限于信件的传递,还可用来传递文件、声音及图形、图像等不同类型的信息。•目前由于电子邮件广泛而频繁地使用,国内外各大网站大多都提供了电子邮件服务,而且有些是免费服务。人们日常使用的电子邮件有很多,但是就方式来说只有下面两种。•第一种是在网站上使用电子邮件,也就是一般所说的Web使用方式。通常人们使用时必须首先登录到WebMail服务器(网页邮件服务器),通过身份验证后才可以查阅收发邮件。•第二种是一种不需要访问Web页面,只需要在本地机器上使用电子邮件的相关软件,就可以直接收发、管理电子邮件。它既能支持全部的Internet电子邮件功能,又能改正WebMail服务器使用的种种缺点,方便用户发送接收邮件。目前以微软的OutLookExpress和国产FoxMail为两款经典代表。两者都是著名的客户端E-mail软件,功能不相上下。•客户端电子邮件软件一般都比WebMail服务器(网页邮件服务器)提供更为全面的功能。使用客户端软件收发邮件登录时不用下载网站页面内容,速度更快。同时使用客户端软件收到的和曾经发送过的邮件都保存在自己的电脑中,不用上网就可以对旧邮件进行阅读和管理。实现了多用户、多邮箱账户,多POP3(Postofficeprotocol,邮局协议了)支持的功能,对邮件管理更加快捷方便。正是由于电子邮件客户端软的种种优点,使它成为了人们工作和生活中进行交流所必不可少的工具。•电子邮件的传输是通过电子邮件简单传输协议(SimpleMailTransferProtocol,简称SMTP)这一系统软件来完成的,它是Internet下的一种电子邮件通信协议。关于具体的电子邮件传输过程(即协议)将在19.2节进行介绍。19.2电子邮件协议分析与系统设计•前面对电子邮件进行了介绍,本节对邮件的传输过程及传输中所使用的协议进行分析和介绍。同时给出本系统的设计方法。19.2.1邮件的传输•对于邮件的传输,它所使用的是SMTP协议为系统之间进行电子邮件的传输。•SMTP是因特网电子邮件系统重要的应用层协议。它使用由TCP提供的可靠的数据传输服务把邮件消息从发信人邮箱所在邮件服务器传送到收信人邮箱所在邮件服务器。SMTP是客户—服务器(C/S)应用模式,由发信人的邮件服务器执行的客户端和收信人的邮件服务器执行的服务器端组成。SMTP的客户端和服务器端同时运行在每个邮件服务器上。当一个邮件服务器向其他邮件服务器发送邮件消息时,它是作为SMTP客户端。当一个邮件服务器从其他邮件服务器接收邮件消息时,它是作为SMTP服务器端。•说明:SMTP协议是一种C/S模式的协议,它必须在服务器和客户机之间使用。•通常Internet上的个人用户不能直接接收电子邮件,而是通过申请ISP(InternetServiceProvider,互联网服务提供商)主机的一个电子信箱,由ISP主机负责电子邮件的接收。一旦有用户的电子邮件到来,ISP主机就将邮件移到用户的电子信箱内,并通知用户有新邮件。因此,当发送一条电子邮件给另一个客户时,电子邮件首先从用户计算机发送到ISP主机,再到Internet,再到收件人的ISP主机,最后到收件人的个人计算机。ISP主机起着“邮局”的作用,管理着众多用户的电子信箱。每个用户的电子信箱实际上就是用户所申请的账号名,其都要占用ISP主机一定容量的硬盘空间。•上面的过程就好像实际生活中信件的投递过程,所申请的电子邮箱就好比家庭地址。这个地址是被邮局可以识别的。然后可以写信,在信封上写上收信人的地址,同时标识出地址。这就是电子邮件的写信顺序,它也需要提供对方的电子邮件地址。接下来,需要把信投递到邮局,而电子邮件是利用网络把信件投递到ISP。然后邮局根据所提供的地址将信件投递到收件人所在地的邮局。最后邮局送信到收件人的家庭地址。电子邮件的顺序也是一样,将邮件传递给ISP以后,ISP就需要根据对方的电子邮件地址将信件发送到对方的ISP,然后ISP将信件发送到收信人的个人信箱。当用户登录到个人信箱时,就可以看到信件并进行阅读。实际的电子邮件的传递过程如图19.1所示。图19.1邮件的传输过程发信者A收信人BISPISP•在Internet上将一段文本信息从一台计算机传送到另一台计算机上,可通过两种协议来完成,即SMTP和POP3。SMTP是Internet协议集中的邮件标准。在Internet上能够接收电子邮件的服务器都有SMTP。电子邮件在发送前,发件方的SMTP服务器与接收方的SMTP服务器联系,确认接收方准备好了,则开始邮件传递;若没有准备好,发送服务器便会等待,并在一段时间后继续与接收方邮件服务器联系。这种方式在Internet上称为“存储—转发”方式。•电子邮件在发送与接收过程中都要遵循SMTP、POP3等协议,这些协议确保了电子邮件在各种不同系统之间的传输。其中,SMTP负责电子邮件的发送,而POP3则用于接收Internet上的电子邮件。•上面详细描述了整个传输的过程。下面对整个传输过程中使用到的SMTP和POP3协议进行详细描述。19.2.2SMTP协议分析•SMTP,是一种提供可靠且有效电子邮件传输的协议。其是建模在FTP文件传输服务上的一种邮件服务,主要用于传输系统之间的邮件信息并提供来信有关的通知。该协议在传输文件过程中使用TCP的25号端口其基本原理是:SMTP是基于TCP服务的应用层协议,由RFC0821所定义,其规定的命令是以明文方式进行的。SMTP的一个重要特点是它能够在传送中接力传送邮件,即邮件可以通过不同网络上的主机接力式传送。其工作在下面两种情况下:•电子邮件从客户机传输到服务器。•从某一个服务器传输到另一个服务器。•SMTP是个请求/响应协议,通常有两种工作模式,发送SMTP和接收SMTP。1.工作原理•利用SMTP协议进行邮件传输的具体步骤是当用户在网络上将邮件发送到邮件服务器上以后,该服务器首先根据邮件的目的地址判断此邮件是否为本地邮件。若目的地址为本地邮件则直接投送到用户的邮箱。否则的话该邮件服务器需要向DNS查询远端邮件服务器的MX(MailExchanger,邮件交换)记录,并建立与远端接收SMTP服务器之间的一个双向传送通道,然后利用该通道实现邮件从用户服务器发送到接收服务器。•通过上面的介绍可以看到,客户端与SMTP服务器进行交互时使用了一系列的交互命令,利用这些命令完成信件的发送,即信件从发送服务器到达接收服务器。2.邮件发送过程•一般来说,邮件传送需要进行3个阶段,分别为连接建立、发送邮件和连接终止。•(1)连接建立:当客户端与服务器端的常用电子邮件端口25号端口建立TCP连接以后,SMTP就开始了其连接阶段。•(2)报文传送:在SMTP客户与服务器建立连接以后,发信人就可以与一个或多个收信人进行报文交换。此阶段是进行信件发送的主要阶段。•(3)连接终止:在报文发送结束以后,客户端终止连接。此时,客户机和服务器之间的连接终止,关闭TCP连接。19.2.3POP3协议分析•POP是用于电子邮件的接收,它使用TCP的110端口,现在常用的是第3版,所以简称为POP3。1.POP3协议介绍•POP3协议采用C/S工作模式。当客户机需要服务时,客户端的软件(例如OutlookExpress等)将与远端的POP3服务器建立TCP连接。当客户端与远端建立了TCP连接以后,客户端就与服务器之间进行数据交换。由于现在的服务器都需要用户提供用户名和密码进行验证,如果验证不通过就会失去与服务器的连接。当验证通过以后,客户端就可以利用POP3协议从服务器上读取邮箱内的信件。简单地说,POP3就是一个简单而实用的邮件信息传输协议。2.工作原理•在客户机与服务器进行了TCP连接以后,POP3客户向POP3服务器发送命令并等待响应,POP3命令采用命令行形式,用ASCII码表示。服务器响应是由一个单独的命令行,或多个命令行组成,响应第一行以ASCII文本+OK或-ERR指出相应的操作状态是成功还是失败。在POP3协议中有3种状态,分别是认可状态、处理状态和更新状态。•一般情况下,大多数现有的POP3客户与服务器执行采用ASCII明文发送用户名和口令。在认可状态等待客户连接的情况下,客户发出连接,并由命令user/pass对在网络上发送明文用户名和口令给服务器进行身份确认。一旦确认成功,便转入处理状态。•注意:现在有很多邮件服务器并不支持利用POP3协议读取信件,只能够以Web方式登录进行邮件的接收。19.3电子邮件客户端系统设计分析•上面介绍了整个邮件的发送和接收过程,同时讲解了发送和接收过程中协议的基本流程。在实际的应用中比上面的过程要稍微复杂一些,例如,现在大多数的邮件服务器对SMTP都需要进行身份验证,同时一般的邮件系统都支持附件的发送等。下面就本系统设计中的问题进行说明。19.3.1邮件的发送•前面已经介绍了利用SMTP协议进行邮件发送的基本流程,下面对实际发送过程中基本步骤实现的设计进行分析。•现在大多数的客户端程序都有一项设置称为“我的SMTP服务器需要身份验证”。这就是说平时所用的SMTP服务器都需要对发送邮件者的身份进行验证,例如smtp.sina.com等都需要进行身份验证。在实际中,进行身份验证所使用的是ESMTP(ExtendedSMTP,扩展SMTP)协议。•ESMTP协议就是对标准SMTP协议进行了扩展。在使用SMTP进行邮件发送时并不要求必须进行身份验证,即可以发送匿名邮件。当然现在大多数的服务器要求必须进行身份验证以后才可以发送邮件,这也正是ESMTP协议发展的原因。利用ESMTP发信时,服务器会要求用户提供用户名和密码以便验证身份。只有验证通过之后才可以进行邮件发送。•在本书所介绍的客户端软件中,支持ESMTP协议,即在进行发送时必须进行服务器身份验证,这也是当今绝大多数服务器需求的模式。19.3.2邮件的接收•邮件的接收仅仅是POP3协议,在本系统中也是采用POP3协议进行接收邮件。在用户输入密码和用户名以后,进行邮件的读取,同时将邮件的标题列出。最后在用户选择某个邮件时,显示邮件的正文。•邮件的接收是本系统较为简单的一个部分,在实际的开发过程中,可以方便地进行邮件接收的一些处理,例如邮件的过滤等,限于篇幅所限,本书对此内容不再介绍。19.3.3系统设计模型•需要设计一个电子邮件的客户端程序,其实际内容就是实现邮件的发送和接收问题。但是,如果手动从设计指令到底层数据流的实现这是很困难的,甚至说去完成SMTP和POP3功能就十分困难。同时还需要设计包括base64编码的问题。实际上在VC程序中提供邮件
本文标题:第19章简单电子邮件的客户端实现
链接地址:https://www.777doc.com/doc-2153854 .html