1、 本科毕业设计 ( 20 届) 基于 VB.NET的 Email发送软件设计 所在学院 专业班级 通信工程 学生姓名 学号 指导教师 职称 完成日期 年 月 - 2 - 摘 要 随着 Internet 的迅猛发展,电子邮件已成为因特网上非常流行、非常方便、非常快捷的通信方式。电子邮件不 仅使用方便,而且还具有传递迅速和费用低廉的特点。越来越多的人在使用它。而且用它的人数势必会继续增加。虽然,现在已经有很多的邮件收发软件例如著名的 FoxMail 但是对于大多数的非专业的人来说它还是有点难度稍嫌负责。因此,我们就利用 SMTP 和 Pop 协议从底层开发了这个软件。 SMTP 全称是简单邮件传输
2、协议,它专门用来发送邮件用的。 Pop全称是邮局协议,是专门用于接收邮件的。我主要是负责如何实现发送邮件功能的。 MailSend 命名空间是我整个程序的核心。它包括两个类。在 SmtpMail 的类中包含了一个 SendMail 的方法,它从底层详细地实现了和服务器的交互操作。你可以用它发送一个纯文本邮件,理所当然地,你也可以使用不同的 SMTP 服务器。经过测试,证实此软件是一个支持 smtp 验证的邮件发送软件。虽然它没有FoxMail 那么强大的功能,但是它容易掌握和使用。 关键字 : SMTP,命名空间,类 - 3 - Abstract With the rapid developm
3、ent of the Internet, E-mail has become very popular on the Internet, very convenient, very quick way to communicate. E-mail is not only easy to use, but also has the transmission characteristics of quick and cheap. More and more people are using it. And the number of with it will surely continue to
4、increase. Although, now has a lot of mail transceiver software such as famous FoxMail but for most of nonprofessional people it is a little difficulty slightly too responsible. Therefore, well use SMTP and Pop protocol developed this software from the bottom. SMTP full name is the simple mail transf
5、er protocol, it with dedicated to send mail. Pop full name is the post office protocol, is specially used to receive mail. I was mainly responsible for how to achieve the E-mail functions. MailSend namespace is the core of my entire program. It consists of two classes. In the class SmtpMail contains
6、 an SendMail method, it is realized in the detailed the server and the interactive operation. You can use it to send a pure text mail, and, of course, you can also use different SMTP server. Through testing, confirmed that the software is a support SMTP validation email software. Although it has no
7、FoxMail so powerful functions, but it easier to master and use. Key words: SMTP, nameSpace, Class- 4 - 目 录 1 引言 . 1 1.1 电子邮件介绍 . 1 1.2 开发背景 . 1 1.3 本文的主要工作 . 1 2 相关应用技术 . 3 2.1 Visual Basic.NET 的系统概述 . 3 2.2 界面设计的基本术语 . 3 2.2.1 窗体 . 3 2.2.2 控件 . 4 2.2.3 按钮 . 4 2.2.4 文本框 . 6 2.3 邮件传输协议 . 7 2.3.1 SMTP
8、 协议 . 7 2.3.2 POP3 协议 . 9 2.3.3 IMAP 协议 . 9 3 界面的设计 . 11 3.1 在 VB.NET 中建立邮件发送软件的界面设计 . 11 3.2 在 VB.NET 中选择控件 . 11 3.3 在 VB.NET 中邮件发送软件界面的实现 . 12 4 Email 发送软件实现 . 16 4.1 在 Visual Basic.NET 中进行主要设计准备 . 16 4.2 Visual Basic.NET 的控件实现 . 16 4.2.1 Label 静态框控件的实现 . 16 4.2.2 LabelTextBox 文本框控件的实现 . 18 4.2.3
9、CheckBox(复选框 )控件的实现 . 18 4.2.4 Button(按钮)控件的实现 . 20 4.3 Visual Basic.NET 邮件发送的实现 . 20 4.3.1 方案一邮件发送实现的主要代码介绍 . 22 4.3.2 方案二邮件发送 实现的主要代码介绍 . 22 - 5 - 5运行结果分析 . 25 5.1 运行情况介绍 . 25 5.2 有待改进的地方 . 28 6 结束语 . 29 致谢 . 错误 !未定义书签。 参考文献 . 30 附录一 邮件发送部分代码 . 31 附录二 作品说明书 . 39 - 1 - 1 引言 1.1 电子邮件介绍 电子邮件( electro
10、nic mail,简称 E-mail,标志 :,也被大家昵称为 “ 伊妹儿 ” )又称 电子信箱 、电子邮政,它是 种用电子手段提供信息交换的通信方式。是 Internet 应用最广的服务:通过网络的 电子邮件系统 ,用户可 以用非常低廉的价格(不管发送到哪里,都只需负担电话费和网费即可),以非常快速的方式(几秒钟之内可以发送到世界上任何你指定的目的地),与世界上任何一个角落的网络用户联系,这些电子邮件可以是文字、图像、声音等各种方式。同时,用户可以得到大量免费的新闻、专题邮件,并实现轻松的信息搜索。 1.2 开发背景 当前流行的各大邮件客户端软件的除了最主要的收发信件之外,功能越来越复杂,但
11、是人们平常真正用到的功能很少 ,很多功能尤其对于那些计算机知识相对缺乏的人来说,更加显得太过于华丽而不太实用。有鉴于此,在了解 RFC 底层协议 的基础上,我们开发了这个各种功能相对简单实用的邮件客户端程序,简化了很多不必要的功能 。 1.3 本文的主要工作 本次课题主要研究的内容是基于 VB.NET 平台的 EMail 发送软件的设计和开发。最终的设计目标是通过 VB.NET 控件 生成一个可输入的邮件发送界面,用户可以自由输入 SMTP 服务器、用户名、密码、收件人地址、发件人地址、邮件主题以及邮件内容。当用户填写邮件内容后,按下发送按键后,系统通过 Session连接邮件服务器,与服务器
12、取得联系,之后将邮件主题部分通过 Transport 发送出去,如用户正确填写内容同 时网络连接的情况下,邮件将成功发送,并弹出成功发送提示框。如果用户将 SMTP 服务器地址等信息填写错误或者网络未连接,按下发送按键后,将会弹出邮件发送失败的提示框,并提醒用户检查错误。 为实现以上内容,主要需要对 SMTP 简单邮件传输协议、 VB.NET 开发平台、界面开发以及 VB 语言 进行研究。 - 2 - 本次课题研究制作对 VB.NET 开发平台是一次有益的尝试,对今后的开发人员在 VB.NET 开发时能起到一定帮助。- 3 - 2 相关应用技术 2.1 Visual Basic.NET 的系统
13、概述 什么是 Visual Basic.NET? Visual Basic.NET 是下一代的 Visual Basic。而并不是简单的在 Visual Basic 6.0 上在添加一些新特性而已,微软重新设计了产品以便使开发者能够更加容易的开发分布式应用,例如基于 WEB 的程序以及多层系统。 Visual Basic.NET 中有两种窗体包, Windows 窗体以及 Web 窗体;一个新版的 ADO 用于接受离线数据源;新的语言,移走了原来的关键字,提高 Type数据的安全性以及提供低级别结构以满足高级别开发者的需求。这些新的特性为Visual Basic 开发者提供了新的开发窗口: 通
14、过 Web 窗体以及 ADO.NET,你可以快速开发可扩展的 Web 站点;通过继承,该语言实现了真正的支持面向对象编程( object-oriented programming); Windows 窗体本身支持可视继承;现在展开程序就象拷贝可执行文件和控件到另一个目录那样简单。 Visual Basic.NET 现在完全集成在其它的 Microsoft Visual Studio .NET 语言中,不仅可以通过不同的语言开发组件,而且通过交叉语言继承,你可以从用一种语言编写的类中派生用另一种语言编写的类。 Visual Basic. NET 具有许多新功能和改进功能,这使它成为功能强大的面向
15、对象的编程语言。 Visual Basic 开发者现在可以使用显式多线程处理创建多线程可伸缩的应用程序。 Visual Basic. NET 中其他的新语言功能包括结构化异常处理、自定。 1 2.2 界面设计的基本术语 2.2.1 窗体 MDI,全称是多文档界面( Multiple Document Interface)。主要应用於基於图形用户界面的系统中,其目的是同时打开和显示多个文档。在 vb 中, MDI作为父窗体使用。 SDI,全称是单文档界面( Single Document Interface)。在此界面下只能- 4 - 打开一个文件,要想打开另一个文件必须关闭当前文件,最好的例子
16、就是Windows 记事本。 上面所说的都是生硬的定义,具体问题具体分析。在 vb 中,我们这样理解:MDI 就是作为父窗体,即可以容纳其他窗体的窗体(注:在一个工程中只能有一个父窗体,而且父窗体只能作为容器,不可以添加控件,说白了 MDI 窗体就是一个限定框架)。 SDI 窗体就是除了 MDI 窗体之外的所有窗体 ,当然,它不会有 MDI窗体的特性。 2.2.2 控件 窗体和控件都是 VB 中的对象,它们是应用 程序的 “ 积木块 ” ,共同构成用户界面。因为有了控件,才使得 VB 不但功能强大,而且易于使用。控件以图标的形式放在 “ 工具箱 ” 中,每种控件都有与之对应的图标。启动 VB
17、后,工具箱位于窗体的左侧。 VB 6.0 的控件分为以下 3类:标准控件(也称内部控件),例如文本框、命令按钮、图片框等。这些控件由 VB 的 .EXE 文件提供。启动 VB 后,内部控件就出现在工具箱中,既不能添加,也不能删除。 ActiveX 控件,以前的版本中称为 OLE 控件或定制控件,是扩展名为 .OCX 的独立文件,其中包括各种版本 VB 提供的控件和仅在专业版和企业版中提 供的控件,另外还包括第三方提供的 ActiveX 控件。可插入对象。因为这些对象能添加到工具箱中,所以可把它们当作控件使用。其中一些对象支持 OLE,使用这类控件可在 VB 应用程序中控制另一个应用程序的对象
18、。 启动 VB 后,工具箱中列出的是内部控件。工具箱实际上是一个窗口,可以通过单击其右上角的关闭按钮。如果想打开工具箱,可执行 “ 视图 ” 菜单中的 “ 工具箱 ” 命令或单击标准工具栏中的 “ 工具箱 ” 按钮。 2.2.3 按钮 Button(按钮 )控件一般接受鼠标单击事件被用来启动、中断或结束一个进程(相当于 Visual Basic 以 前版本的 CommandButton 控件)。单击 Button 控件时将调用已写入 Click 事件过程中的过程。 Button 控件在大多数 Visual Basic 应用程序中都会用到,用户可以单击按钮执行操作。单击时,按钮不仅能执行相应的操
19、作,而且看起来与被按下和松开一样。 - 5 - 1. 向窗口添加按钮 在应用程序中很可能要使用多个按钮。就象在其他容器控件上绘制按钮那样,从工具箱里把 Button 控件直接拖到窗体上即可。可用鼠标调整按钮的大小,也可通过设置 Location(坐标,用来确定控件相对窗体左上方顶点的位置)和Size(大小,第一个参数代表宽度,第二个参数代表高度)属性进行调整。 2.设置按钮显示文本 可用 Text 属性改变按钮上显示的文本。设计时,可在控件的 “ 属性窗口 ”中设置此属性。在设计时设置 Text 属性后将动态更新按钮文本。 Text 属性最多包含 255 个字符。若标题超过了命令按钮的宽度,则
20、会折到下一行。但是,如果控件无法容纳其全部长度,则标题会被剪切。可以通过设置 Font 属性改变在命令按钮上显示的字体。 3.创建键盘快捷方式 可通过 Text 属性创建按钮的访问键快捷方式。为此,只需在 作为访问键的字母前添加一个连字符( &)。例如,要为标题 “Ok” 创建访问键,应在字母 “O”前添中连字符,于是得到 “&Ok” 。运行时,字母 “O” 将带下划线,同时按 Alt+O键就可执行单击按钮程序所执行的动作。 注意:如果不创建访问键,而又要使标题中包含连字符,应添加两个连字符( &)。这样,在标题中就只显示一个连字符。 4.选定按钮 运行时,可用鼠标或键盘通过下述方法选定按钮: (1)用鼠标单击按钮; (2)按 Tab 键,将焦点转移到按钮上,然后按 Enter 键选定按钮; (3)按按钮的访问键( Alt+带有下划线的字母 )。 5.Click 事件 运行时单击按钮,将触发按钮的 Click 事件并执行写入 Click 事件过程中的代码,同时,单击按钮的过程也将生成 MouseMove、 MouseLeave、 MouseDown 和MouseUp 等事件。如果要在这些相关事件中附加事件过程,则应确保操作不发生冲突。对控件的操作不同,这些事件过程发生的顺序也不同。 Button 控件的单击事件发生顺序为: