毕业论文——基于CS的电子邮件简单收发系统设计与实现_第1页
毕业论文——基于CS的电子邮件简单收发系统设计与实现_第2页
毕业论文——基于CS的电子邮件简单收发系统设计与实现_第3页
毕业论文——基于CS的电子邮件简单收发系统设计与实现_第4页
毕业论文——基于CS的电子邮件简单收发系统设计与实现_第5页
免费预览已结束,剩余23页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于C/S的电子邮件简单收发系统设计与实现摘 要电子邮件作为互联网中交换信息广泛的通信工具之一,如今都已被广大用户接受。早期的电子邮件只是从一个计算机终端向另外一个计算机终端传送文本信息,而现在的电子邮件不仅可以发送文本信息,还可以传送声音、图片、文档等多种信息。很多邮件邮件客户端软件不断地被用户利用起来,例如outlook,Foxmail,但是这些邮件客户端对于很多用户来说却过于复杂。为了方便用户快捷地收发邮件,本课题利用SMTP协议和POP3协议,经过前期对系统的需求分析和对相关协议的了解,设计并实现了简单的电子邮件收发系统。为了保证本系统功能的完整性,在实现该系统过程中,设计了邮件用户注册模块,当用户首次使用本系统时,须注册一个邮件账号,然后才能进行其他的操作。作为一个电子邮件客户端,邮件的发送与收取是其核心功能,本系统邮件发送块实现电子邮件的发送,支持邮件的单个发送和群发,在邮件收取块,实现了电子邮件的简单收取。另外还增加了地址薄管理块让用户更方便地管理自己的联系人,对联系人进行添加、修改、删除等。关键词:电子邮件;SMTP;POP3;邮件收发系统Design and Implementation of Simple Email Receiving and Sending System Based on C/S AbstractEmail is the communication tool which is widely used in the internet to exchange information. Now it has been accepted by many people. In the early days, email is only used in transmitting pure text information from a computer terminal to another. But at present, it is not limited in this, it can support many types of information, such as voice, picture, document and so on. Much software has been used by users. such as Outlook, Foxmail and so on. But they are too complex to many users. In order to send and receive email conveniently, a simple email sending and receiving system has been designed based on SMTP and POP3 protocol after requirement analysis and protocols learning. To prove integrality of the system, the block of accounts registering is necessary. When using this system first time, users should register one account. It has the kernel function of sending and receiving email. In the block of sending email, group sending is supported. In addition, there is an address management block.Key words: E-mail; SMTP; POP3; Mail Receiving and Sending System1 引言1.1 邮件客户端相关介绍电子邮件(Electronic Mail、E-mai1)又称电子信箱,它是种用电子手段提供信息交换的通信方式,是应用于网络上的使用最广泛的网络功能之一。到目前为止,可以说电子邮件是Internet资源使用最多的一种服务,E-mail不只局限于信件的传递,还可用来传递文件、声音及图形、图像等不同类型的信息。电子邮件不是“终端到终端”的服务,而是被称为“存贮转发式”的服务。“存贮转发式”正是电子信箱系统的核心,利用存贮转发可进行非实时通信,属异步通信方式。电子邮件的发送几乎是即时的并且可以一次发送给多个人,发送和接收主要通过SMTP协议和POP3协议来实现,经过几十年的发展,电子邮件系统已经形成了完善的技术体系。电子邮件系统是一种新型的信息系统,是通信技术和计算机技术结合的产物。电子邮件系统采用“存储转发”的机制来完成电子邮件的收发。邮件服务器处理发送和接收消息的事项,并在处理电子邮件的过程中与其他机器进行通信。图1工作流程图1.2 课题背景随着互联网技术的迅猛发展,网络给人们带来了很多便利,比如人们借助于网络进行相互交流变得更加方便。电子邮件作为互联网中交换信息广泛的通信工具之一,如今都已被广大网民接受。在了解RFC底层协议的基础上,本课题开发了这个功能相对简单实用的邮件客户端程序。1.3 现状分析电子邮件来源于专有电子邮件系统,早在Internet流行以前,电子邮件就已经存在了,是在主机-多终端的主从式体系中从一台计算机终端向另一台计算机终端传送文本信息的相对简单的方法下发展起来的。经历了漫长的过程之后,它现在已经演变成为一个更加复杂并丰富得多的系统,可以传送声音、图片、图像、文档等多媒体信息,以至于如数据库或账户报告等更加专业化的文件都可以以电子邮件附件的形式在网上分发。现在,电子邮件已成为许多商家和组织机构的生命血脉,用户可以通过电子邮件的讨论会进行项目管理,并且有时还根据快速而且跨洲际的电子邮件信息交换进行重要的决策行动。毫无疑问的是,Internet扩展了其应用的范围,过去只能在其局域网上进行交谈的公司现在可以通过网络与他们的客户、竞争伙伴与世界上的任何人进行通信和交流。一旦某个组织的电子邮件系统运行在支持TCP/IP协议的网络上或具有支持两个Internet邮件服务协议SMTP(简单邮件传输协议)和POP(邮局协议)之一的Internet网关,它的邮件用户就能够连接到任何具有相似连接的电子邮件地址上了,并且不论其电子邮件账户在何处。2 电子邮件相关协议开发邮件客户端程序,就不得不用到RFC822邮件格式、SMTP协议和POP3协议。RFC822定义了用于电子邮件报文的格式,即RFC822定义了POP3、SMTP以及其他电子邮件传输协议所提交、传输的内容;POP3是因特网上传输邮件的第一个协议,也是一个离线协议;SMTP是Internet上传输电子邮件的标准协议,用于提交和传送电子邮件,规定了主机之间传输电子邮件的标准交换格式和邮件在链路层上的传输机制。2.1 RFC822邮件格式RFC822中对电子邮件的格式加以定义,内容全部由ASCII字符组成,就是通常所说的文本文件,因而标准将它称为Internet文本信件(Internet Text Messages)。为了支持多媒体文档的传输,1996年又发表了一系列的关于MIME(Multipurpose Internet mail Extensions)格式的定义。RFC822定义的邮件格式由两部分组成:邮件头(也称信封)和邮件内容。邮件头包括与传输、投递邮件有关的信息;邮件内容包括标题和正文。2.2 SMTP协议SMTP( Simple Mail Transfer Protocol)简单邮件传输协议,是目前使用最广泛的发送电子邮件的协议。SMTP通常用于把电子邮件从客户机传输到服务器,以及从某一服务器传输到另一个服务器。2.2.1 SMTP协议简介简单邮件传输协议(SMTP)的目标是可靠高效地传送邮件,它独立于传送子系统而且仅要求一条可以保证传送数据单元顺序的通道。SMTP的一个重要特点是它能够在传送中接力传送邮件,传送服务提供了进程间通信环境(IPCE),该环境可以包括一个网络,几个网络或一个网络的子网。传送系统(或IPCE)不是一对一的,进程可能直接和其它进程通过已知的IPCE通信。邮件是一个应用程序或进程间通信,邮件可以通过连接在不同IPCE上的进程跨网络进行邮件传送,更特别的是,邮件可以通过不同网络上的主机进行接力式传送。SMTP设计基于以下通信模型:针对用户的邮件请求,发送SMTP与接收SMTP之间建立一个双向传送通道。接收SMTP可以是最终接收者也可以是中间传送者。SMTP命令由发送SMTP发出,由接收SMTP接收,而应答则反方向传送。一旦传送通道建立,SMTP发送者发送MAIL命令指明邮件发送者。如果SMTP接收者可以接收邮件则返回OK应答。SMTP发送者再发出RCPT命令确认邮件是否接收到。如果SMTP接收者接收,则返回OK应答;如果不能接收到,则发出拒绝接收应答(但不中止整个邮件操作),双方将如此重复多次。当接收者收到全部邮件后会接收到特别的序列,如果接收者成功处理了邮件,则返回OK应答。SMTP提供传送邮件的机制,如果接收方与发送方连接在同一个传送服务下时,邮件可以直接由发送方主机传送到接收方主机;当两者不在同一个传送服务下时,通过中继SMTP服务器传送,为了能够对SMTP服务器提供中继能力,它必须拥有最终目的主机地址和邮箱名称。SMTP的工作过程有一下几个过程有:(Mail)基本发送过程,向前传送邮件,确认邮箱名称和扩展邮件列表,发送到终端和打开关闭交换等。2.2.2 SMTP的命令与应答SMTP定义了14个命令,它们是:HELO MAIL FROM: RCPT TO: DATA RSET SEND FROM: SOML FROM: SAML FROM: VRFY EXPN HELP NOOP QUIT TURN 其中使得SMTP工作的基本的命令有7个,分别为:HELO,MAIL,RCPT,DATA,REST,NOOP和QUIT。下面分别介绍如下:HELO-发件方向收件方问候,命令后面是发件人的服务器地址或标识。收件方回答OK时标识自己的身份。问候和确认过程表明两台机器可以进行通信,同时状态参量被复位,缓冲区被清空。MAIL-这个命令用来开始传送邮件,它的后面跟随发件方邮件地址(返回邮件地址)。它也用来当邮件无法送达时,发送失败通知。为保证邮件的成功发送,发件方的地址应是被对方或中间转发方同意接受的,这个命令会清空有关的缓冲区,为新的邮件做好准备。RCPT -这个命令告诉收件方收件人的邮箱。当有多个收件人时,需要多次使用该命令,每次只能指明一个人。如果接收方服务器不同意转发这个地址的邮件,它必须报550错误代码通知发件方;如果服务器同意转发,它要更改邮件发送路径,把最开始的目的地(该服务器)换成下一个服务器。DATA-收件方把该命令之后的数据作为发送的数据。数据被加入数据缓冲区中,以单独一行是.的行结束数据。结束行对于接收方意味着立即开始缓冲区内的数据传送,传送结束后清空缓冲区;如果传送接受,接收方回复OK。REST-这个命令用来通知收件方复位,所有已存入缓冲区的收件人数据、发件人数据和待传送的数据都必须清除,接收方必须回答OK。NOOP-这个命令不影响任何参数,只是要求接收方回答OK,不会影响缓冲区的数据。QUIT-SMTP要求接收方必须回答OK,然后中断传输。在收到这个命令并回答OK前,收件方不得中断连接,即使传输出现错误。发件方在发出这个命令并收到OK答复前,也不得中断连接。对SMTP命令的响应是多样的,它确定了在邮件传输过程中请求和处理的同步,也保证了发送SMTP知道接收SMTP的状态。每个命令必须有且只有一个响应。SMTP响应由三位数字组成,其后跟一些文本。数字决定了下一个应该进入的状态,而文本对人是有意义的。三位的响应已经包括了足够的信息,不用再阅读文本,文本可以直接抛弃或者传递给用户。特别的是,文本是与接收和环境相关的,所以每次接收到的文本可能不同。在附录E中可以看到全部的响应码。正规的情况下,响应由下面序列构成:三位的数字,一行文本和一个,或者也可以是一个多行响应。只有EXPN和HELP命令可以导致多行应答,然而对所有命令,多行响应都是允许的。SMTP协议传送邮件的应答:500 格式错误,命令不可识别(此错误也包括命令行过长)501 参数格式错误502 命令不可实现503 错误的命令序列504 命令参数不可实现211 系统状态或系统帮助响应214 帮助信息220 服务就绪221 服务关闭传输信道 421 服务未就绪,关闭传输信道(当必须关闭时,此应答可以作为对任何命令的响应)250 要求的邮件操作完成251 用户非本地,将转发向450 要求的邮件操作未完成,邮箱不可用(例如,邮箱忙)550 要求的邮件操作未完成,邮箱不可用(例如,邮箱未找到,或不可访问)451 放弃要求的操作;处理过程中出错551 用户非本地,请尝试452 系统存储不足,要求的操作未执行552 过量的存储分配,要求的操作未执行553 邮箱名不可用,要求的操作未执行(例如邮箱格式错误)354 开始邮件输入,以.结束554 操作失败2.3 POP3协议POP3(Post office Protrol,邮局协议,第3版)是Internet上传输电子邮件的第一个标准协议,也是一个离线协议。POP3为客户机提供了发送信任状(用户名和密码),这样就可以规范对电子邮件的访问。POP3是绝大多数邮件收发程序使用的协议,用户接收邮件时,一般都使用该协议。2.3.1 POP3协议简介POP3协议适用于C/S结构的脱机模型的电子邮件协议。在POP3协议下,当客户机与服务器连接并查询电子邮件时,被客户机所指定的将被下载的邮件都将被程序下载到客户机,下载后客户机可进行读取,修改等操作,而无需与服务器进一步交互。POP3客户向POP3服务器发送命令并等待响应,POP3命令采用命令行形式,用ASCII码表示。服务器响应是由一个单独的命令行组成,或多个命令行组成,响应第一行以ASCII文本+OK或-ERR指出相应的操作状态。在POP3协议中有三种状态,即认可状态,处理状态和更新状态。当客户机与服务器建立联系时,一旦客户机提供了自己身份并成功确认,即由认可状态转入处理状态,在完成相应的操作后客户机发出quit命令,则进入更新状态,更新之后重返认可状态。图2 POP3协议与三种状态间的关系2.3.2 POP3的命令和应答一般情况下,大多数现有的POP3客户端与服务器执行采用ASCII明文发送用户名和口令,在认可状态等待客户连接的情况下,客户发出连接,并由命令user/pass对在网络上发送明文用户名和口令给服务器 进行身份确认。一旦确认成功,便转入处理状态。为了避免发送明文口令的问题,有一种新的认证方法,命令为APOP,使用APOP,口令在传输之前被加密。当第一次与服务器连接时,POP3服务器向客户机发送一个ASCII码问候,这个问候由一串字符组成对每个客户机是唯一的,与当时的时间有关,然后客户机把它的纯文本口令附加到从服务器接收到的字符串之后,然后计算出结果字符串的MD5单出函数消息摘要,客户机把用户名与MD5消息摘要作为APOP命令的参数一起发送出去。一开始便是客户端与服务器的连接,端口设为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命令来恢复所有已被删除的邮件。条件是你还没有退出,一旦退出,邮件便不能恢复了。全部完成以后,输入QUIT命令就可以退出POP3服务器了。表1 pop3协议命令码命令参数状态说明USER用户名认可此命令与PASS若成功,将导致状态转换PASS密码认可 APOP名字,Digest认可Digest是MD5的消息摘要STAT名字,Digest处理请求服务器发送回关于邮箱的统计资料,如邮件数等UIDLMsg#处理返回邮件的统一标志符,POP3会话的每一个标志符都是唯一的LISTMsg#处理返回邮件数量和每个邮件的大小RETRMsg#处理返回由参数标志的邮件的全部文本DELEMsg#处理服务器把由参数标识邮件记为删除,由QUIT命令执行RSETMsg#处理服务器将重置所有标记为删除的邮件,用于撤消DELE命令TOPMsg#处理服务器返回参数标识的邮件前n行内容,n是正整数NOOPMsg#处理服务器返回一个肯定的响应QUITMsg#更新如果服务器处于处理状态,那么进入更新状态删除任何标记为删除的邮件;若处于认可状态,结束会话,不进行更新3 系统需求分析3.1 功能需求作为一个电子邮件客户端,其核心功能是能够发送和接收邮件,其他附加功能如地址薄管理等也是不可少的。3.1.1 邮件发送需求主要要求能实现邮件的发送,不仅能实现单个发送而且还能实现群发,同时要求能够发送附件。3.1.2 邮件接收需求要求能实现电子邮件的接收,不仅能实现邮件文本的接收而且还能实现附件的接收,同时具有提示发件人,接收日期。3.1.3 附加功能需求附件功能主要有地址薄管理,用户能方便地实现对联系人的管理。3.2 研究思路根据需求,本系统按照如下几个模块的设计的。3.2.1 用户注册块用户只有在注册邮件账号后才能进行其他操作。3.2.2 邮件发送块邮件发送块主要实现邮件的发送,包括群发以及附件的发送。3.2.3 邮件接收块主要实现邮件文本信息的收取,包括附件的收取,同时具有其他如发件人等信息提示功能。3.2.4 地址薄管理块主要是方便用户管理自己的联系人,主要是对联系人的增加,删除等。4 系统总体功能模块和系统总体流程4.1 系统总体功能模块系统的功能模块有账号管理模块、地址薄管理模块、写邮件模块与收邮件模块。图3 系统功能模块图4.2 系统流程当用户打开客户端时,需要注册一个账号进行邮件的收取等操作。图4 流程图5 系统功能实现5.1 新建账号模块5.1.1 模块功能用户运行系统时,需要新建一个邮件账号,在这个信件账号的过程中,需要指定SMTP服务器以及SMTP的端口。本模块主要实现邮件账号的注册。5.1.2 核心实现1. 网络连接类及实例TcpClient为TCP网络服务提供客户端连接类TcpClient实例对象tc。TcpClient类提供了一些简单的方法,用于在同步阻塞模式下通过网络来连接、发送和接收流数据,而实例化的过程也是连接SMTP服务器的过程。Privite TcpClient tc;2. 提供用于网络访问的基础数据流及其实例 NetworkStream此类提供访问网络的基础数据流的方法。其中最基本也是最重要的两个方法就是Write()和Read()方法。private NetworkStream ns;3. 一维字符串数组变量FilePath此字符串数组主要用来存放用户选择的附件的绝对路径。private string FilePath;4. 发送接收邮件所需的基本参数UserName; / 用于调用发送邮件类的用户名PassWd; / 用于调用发送邮件类的密码MailAddress;/ 用于调用发送邮件类发送邮件人地址AccountName; / 新建的帐户名SmtpName; / 用于调用发送邮件类的SMTP服务器名SmtpPort=25;PopName; / 用于调用接收邮件的pop服务器名PopPort=110;5.1.3 运行界面指定收发邮件的必须参数之后,再回到系统的主界面。图5 新用户注册5.2 发送邮件模块5.2.1 模块功能在新建账号的过程中已经指定了邮件地址和账号名称,所以默认将以这些参数来发送邮件,通过调用参数的不同程序会自动的调用相对应的代码来执行不同的操作。本模块主要实现邮件的发送,支持文本或html形式发送,同时也支持附件的发送。5.2.2 核心实现1. 重载的构造函数 SmtpMail()此函数主要用于在初始化过程中,把用户选择的附件的路径以参数的形式传给FilePath。public SmtpMail(ArrayList array) /在重载构造函数的同时,将FilePath初始化 FilePath = new stringarray.Count; Attachments = new System.Collections.ArrayList(); for (int i = 0; i array.Count; i+) FilePathi = arrayi.ToString(); if (FilePath != null) AddAttachment(FilePath); 2. 添加附件的函数AddAttachment传给FilePath的路径,通过这样一个函数就可以循环的动态的添加到IList接口的一个对象中了,方便以后在具体的实现的过程中的使用。public void AddAttachment(params string FilePath) try if (FilePath = null) throw (new ArgumentNullException(FilePath); for (int i = 0; i FilePath.Length; i+) Attachments.Add(FilePathi); catch (Exception ex) MessageBox.Show(ex.ToString(); 3. 得到上传的附件的文件流GetStream由于在网络中的操作都是以网络流的形式来实现的,因此先将上传的附件转换成文件流,然后再用Write的方法把这些附件的文件流写入到网络中,来完成发送附件的操作。具体实现代码如下所示:private string GetStream(string FilePath) /建立文件流对象 System.IO.FileStreamFileStr=new System.IO.FileStream(FilePath,System.IO.FileMode.Open); byte by=new byteSystem.Convert.ToInt32(FileStr.Length); FileStr.Read(by,0,by.Length); FileStr.Close(); return(System.Convert.ToBase64String(by); 4. 发送SMTP命令的函数SendCommand这个函数的作用是把SMTP命令的字符串转换成对应的字节型值(C中规定的Write方法只能写入字节型的数据)然后写入网络中,如果操作成功就返回一个标志为真的布尔型变量,如果操作失败或者发生异常就返回标志为假的布尔型变量。具体代码如下所示:private bool SendCommand(string str) /定义一个数组byte WriteBuffer; /设定一个布尔类型的变量bool state=false; WriteBuffer = Encoding.Default.GetBytes(str);/加入防错机制,可以有效提高程序运行的效率和捕获出错信息try/向网络中写入数据ns.Write(WriteBuffer,0,WriteBuffer.Length); state=true;catch(Exception ex)/返回出错信息MessageBox.Show (ex.ToString ();state=false;/返回标志位return state;5. 邮件发送程序SendMail具体的实现SMTP协议的程序正是通过它一步一步实现并最终实现发送简单邮件甚至带附件的邮件的功能。而它的实现是调用以上给出的各个函数的结果。以下就简单的通过几个SMTP命令的格式来实现。private bool SendEmail() /连接网络 try /建立一个TCP连接tc=new TcpClient(mailserver, mailserverport); catchMessageBox.Show (连接失败,请确认);return false; /获取当前流的资料ns = tc.GetStream(); SMTPCodeAdd(); /验证网络连接是否正确 if(RightCodeHTRecvResponse().Substring(0,3)=null) return false; string SendBuffer; string SendBufferstr; /进行SMTP验证 if(ESmtp) SendBuffer=new String4; SendBuffer0=EHLO + mailserver + enter; SendBuffer1=AUTH LOGIN + enter; /核对用户名和密码SendBuffer2=Base64Encode(username) + enter; SendBuffer3=Base64Encode(password) + enter; if(!Dialog(SendBuffer,SMTP服务器验证失败,请核对用户名和密码)return false; else SendBufferstr=HELO + mailserver + enter; if(!Dialog(SendBufferstr,) return false; /核对发件人地址SendBufferstr=MAIL FROM: + enter; if(!Dialog(SendBufferstr,发件人地址错误,或不能为空) return false; /把传过来的收件人的地址分割然后提交给服务器string split=;string address=Regex.Split (Recipient,split);SendBuffer=new string address.Length;for(int i=0;iSendBuffer.Length;i+)SendBufferi=RCPT TO: + enter;if(!Dialog(SendBuffer,收件人地址有误) return false; /发送相关的邮件正文SendBufferstr=DATA + enter; if(!Dialog(SendBufferstr,) return false; /提示发件人信息SendBufferstr=From: + FromName + +enter;SendBufferstr += enter + . + enter; if(!Dialog(SendBufferstr,错误信件信息) return false; /断开连接SendBufferstr=QUIT + enter; if(!Dialog(SendBufferstr,断开连接时错误) return false; ns.Close(); tc.Close();FilePath=null;return true; 5.2.2 运行界面发信时可选择相关的邮箱账号来进行邮件发送,也可选择相关的收件人。图6 发送邮件5.3 接收邮件模块5.3.1 模块功能可收取选中的邮件账号邮件,也可收取新邮件账号的邮件。当选中指定的邮件账号收取邮件时,会提示相关的服务器地址、用户名和密码。5.3.2 核心实现1. 连接服务器并返回邮件总数 public int connect() /连接POP3服务器 OpenPOP.POP3.Utility.Log = true; popClient.Disconnect(); popClient.Connect(POPServer, int.Parse(port); popClient.Authenticate(login, password); /得到邮件总数 count = popClient.GetMessageCount(); msgs.Clear(); return count;2. 接收邮件public void receiveMail(int beginIndex, int endIndex) / 选取邮件数 for (int i = beginIndex; i = endIndex; i+) receiveMail(i); 5.3.3 运行界面当要收取新邮件账号邮件时需重新输入相应的服务器地址、用户名和密码。收取邮件运行界面如图7:图7 接收邮件5.4 地址薄模块5.4.1 模块功能可以对地址薄管理,即可以添加、删除联系人,也可以修改某个联系人基本信息。5.4.2 核心实现1. 增加联系人 private void button1_Click(object sender, EventArgs e) string txt2; string txt3; txt2 = textBox2.Text; txt3 = textBox3.Text; / 判断邮箱地址是否正确 if (txt2.Contains() = false) MessageBox.Show(邮箱地址错误!); else /读取数据库 LName = this.textBox1.Text; MAddress = this.textBox2.Text; PhoneNo = this.textBox3.Text; Qq = this.textBox4.Text; Mobile = textBox5.Text; Address = this.textBox6.Text; /连接数据库Stringconn=provider=Microsoft.Jet.OLEDB.4.0;DataSource=+Application.StartupPath+Manage.mdb; OleDbConnection myconn = new OleDbConnection(conn);myconn.Open();/向数据库中插入联系人信息string insert=insert intolianxiren(Name,Mailbox,Phone,QQ,Mobile,Address) values( + Add.LName + , + Add.MAddress + , + Add.PhoneNo + , + Add.Qq + , + Add.Mobile + , + Add.Address + );OleDbCommand cmd = new OleDbCommand(insert, myconn); try cmd.ExecuteNonQuery(); catch (Exception ex) MessageBox.Show(ex.ToString(); finally myconn.Close(); this.DialogResult = DialogResult.OK; this.Close(); 2. 修改或删除联系人修改联系人: private void button1_Click(object sender, EventArgs e) string txt2; string txt3; txt2 = textBox2.Text; txt3 = textBox3.Text; if (txt2.Contains() = false) MessageBox.Show(邮箱地址错误!); else /调用选中账号的相关信息 Add.LName = this.textBox1.Text; Add.MAddress = this.textBox2.Text; Add.PhoneNo = this.textBox3.Text; Add.Qq = this.textBox4.Text; Add.Mobile = textBox5.Text; Add.Address = this.textBox6.Text; string conn = provider=Microsoft.Jet.OLEDB.4.0;Data Source= + Application.StartupPath + Manage.mdb; OleDbConnection myconn = new OleDbConnection(conn); myconn.Open(); /修改联系人属性 string sql = update lianxiren set Mailbox= + Add.MAddress + ,Phone= + Add.PhoneNo + ,QQ= + Add.Qq + ,Mobile= + Add.Mobile + ,Address= + Add.Address + where Name = + Add.LName + ; OleDbCommand cmd = new OleDbCommand(sql, myconn); try cmd.ExecuteNonQuery(); catch (Exception ex) MessageBox.Show(ex.ToString(); finally myconn.Close(); this.DialogResult = DialogResult.OK; this.Close(); 删除联系人: private void button3_Click(object sender, EventArgs e) /调用选中的账号的信息 Add.LName = this.textBox1.Text; Add.MAddress = this.textBox2.Text; Add.PhoneNo = this.textBox3.Text; Add.Qq = this.textBox4.Text; Add.Mobile = te

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论