一个SMTP客户端程序的设计与实现
摘 要
本论文是在实现了SMTP协议的客户端软件MyEMail开发的基础上完成的,涉及到软件的设计、实现以及测试等方面。通过本设计可以掌握SMTP协议,了解到当前邮件服务的一些不足。论文着重对邮件服务所使用的SMTP协议进行了分析,并根据ESMTP协议的规定添加了身份验证的功能增加了邮件服务的安全性。
MyEMail软件是根据SMTP协议的原理、协议的模型以及工作过程,而设计出一款完整、实用的基于SMTP协议的客户端软件。该软件的实现过程中对协议的工作模式和流程进行分析。从常规的邮件发送过程出发,采用C++语言在VC++6.0的平台下,借助VC++6.0提供的应用程序框架MFC加以实现。该软件实现了SMTP协议,具有向邮件服务器发送身份验证消息以及邮件的功能,使用户能够在本地通过客户端程序向服务器发送邮件信息。
目前,虽然协议规定在正文中可以使用网页信息。但使用该手段发送的邮件正文可能包含有恶意代码,从而出现安全隐患,因此,在本设计中并没有提供相关支持。
关键词:SMTP协议;邮件;C++;客户端目 录
1引言 1
2 SMTP协议概述 1
2.1 协议简介 1
2.2 协议原理 1
2.2.1 工作模型 2
2.2.2 工作过程 3
2.3 相关协议的简单介绍 6
3软件开发背景与环境 7
3.1 软件开发背景 7
3.2 软件开发环境 7
3.2.1系统环境 7
3.2.2 工具简介 8
4 SMTP协议客户端软件设计与实现 8
4.1 需求分析与总体设计 8
4.1.1 功能分析 8
4.1.2 总体设计 9
4.2 各模块设计 10
4.2.1 实现SMTP协议的核心类库 10
4.2.2 实现软件的界面类 16
4.2.3 模块之间的关系 17
4.3 核心模块实现与核心功能编码 17
4.3.1 邮件发送实现 17
4.3.2 邮件内容相关实现 20
4.3.3 邮件的编码方式 22
5 软件测试 24
结 论 26
参考文献 26
致 谢 27
声 明 28
1引言
随着信息技术的发展、互联网的普及,电子邮件已经逐渐称为人们正常工作和生活中进行沟通的重要手段。采用电子邮件服务可以方便快捷的与朋友、同事或合作伙伴进行沟通,传递信息。电子邮件技术具有方便、快捷、成本低廉等特性。能够大大减少信息传递的时间,比传统的信件传递方式更快捷,成本也更低。在实现过程中加入了认证机制,因而,更安全、可靠。
目前与邮件相关的协议大概可以分为两种:一种是邮件发送协议――SMTP协议;另一种是邮件接收协议――POP协议。本软件实现的是用于发送邮件的SMTP协议。目前,SMTP协议已经有了大量的实现,应用广泛。本软件是为了研究SMTP协议而作的一个实验型项目。目的在于掌握SMTP的工作原理,并实现一个能够发送邮件的完整邮件客户端。
本毕业设计以SMTP协议为理论基础,以面向对象的方式在VC++6.0平台下进行实现。用计算机语言对SMTP协议的工作原理进行了描述。实现了与邮件发送有关的基础类,根据面向对象的特性,迅速的搭建了邮件的客户端。在实现过程中,用到了VC++中的MFC框架,使得软件能够符合有关的WINDOWS程序标准,并且有了清晰的结构规划,给维护带来了方便。
2 SMTP协议概述
2.1 协议简介
SMTP,简单邮件传输协议是Simple Mail Transfer Protocol的缩写。它是互联网上的一种通讯协议,工作于应用层,使用端口为25。主要功能就是传送电子邮件,当我们使用邮件程序,邮寄E-Mail给对方时,必须通过SMTP协议,将邮件发送到对方的邮件服务器上,等待对方查收。SMTP协议的目标是可靠高效地传送邮件,它独立于传送子系统而且仅要求一条可以保证传送数据单元顺序的通道。
SMTP的一个重要特点是它能够在传送中接力传送邮件,传送服务提供了进程间通信环境(IPCE),此环境可以包括一个网络,几个网络或一个网络的子网。理解到传送系统(或IPCE)不是一对一的是很重要的。进程可能直接和其它进程通过已知的IPCE通信。邮件是一个应用程序或进程间通信。邮件可以通过连接在不同IPCE(Interprocess Communication Environment)上的进程跨网络进行邮件传送。更特别的是,邮件可以通过不同网络上的主机接力式传送。
2.2 协议原理
从1982年到现在,SMTP协议及其相关的协议已经发展成一个比较完整的体系,不再是建立之初那个只能传送文本消息的简单协议。协议制定者制定了一系列的相关协议,如:有关认证的部分和附件传送部分等。相关文档也由最初的RFC821文档,扩展为目前的RFC2821、RFC2045-2049、RFC2554等多个。目前按照邮件协议的规定已经不仅仅能够传送文本,而且能够传送文件,网页以及多媒体信息。但基本的操作模式没有变化,只是增加了相关的命令和格式。邮件传送的模型,没有变化。以下就以RFC821文档中规定描述有关的内容。