基于smtp协议与pop3协议的邮件收发系统的设计与实现论文正文.docx
- 文档编号:7490764
- 上传时间:2023-01-24
- 格式:DOCX
- 页数:20
- 大小:1.56MB
基于smtp协议与pop3协议的邮件收发系统的设计与实现论文正文.docx
《基于smtp协议与pop3协议的邮件收发系统的设计与实现论文正文.docx》由会员分享,可在线阅读,更多相关《基于smtp协议与pop3协议的邮件收发系统的设计与实现论文正文.docx(20页珍藏版)》请在冰豆网上搜索。
基于smtp协议与pop3协议的邮件收发系统的设计与实现论文正文
目录
第一章引言1
1.1设计的目的和意义1
1.2电子邮件收发的原理和过程1
1.2.1电子邮件的定义1
1.2.2电子邮件的工作过程1
1.2.3三种常见邮件协议2
1.3开发环境简介2
第二章SMTP和POP3协议及工作原理3
2.1SMTP协议3
2.2POP3协议3
2.3BASE64编码与解码4
2.3.1BASE64编解码原理4
2.3.2BASE64函数5
第三章系统设计6
3.1系统功能分析6
3.2系统模块设计6
3.3数据流程设计7
3.4数据库逻辑结构设计7
第四章系统开发过程8
4.1建立数据表8
4.2创建系统主窗体8
4.3通过程序发送邮件9
4.4通过程序接收邮件10
第五章系统测试12
5.1系统主界面12
5.2用户注册界面12
5.3修改密码界面13
5.4邮件发送界面14
5.5邮件接收界面14
5.6邮件查询界面15
5.7编辑用户界面16
总结17
致谢18
参考文献:
19
基于SMTP与POP3的邮件收发系统的设计与实现
摘要:
电子邮件是目前Internet上应用最多和最广泛的服务项目之一,SMTP(SimpleMailTransportProtocol)和POP3(PostOfficeProtocol3)是在电子邮件服务中分别负责发信和收信的两种协议。
本文介绍了电子邮件系统的工作原理及相关协议,并基于这些协议设计和开发了一个实用的邮件收发系统。
用户运行软件后可以进行基本操作(用户注册、修改密码、安全退出),邮件管理(邮件发送和邮件接收),用户管理(查询邮件和修改、查询、删除用户),并对数据库进行配置。
若为新用户则需先注册,用户可以发送或接收一个或多个带有附件的邮件,也可以使用不同的SMTP或POP3服务器。
关键词:
电子邮件;SMTP;POP3
TheDesignandImplementationofE-mailSystemtoSendandReceiveBasedonSMTPandPOP3
ChenJing,DepartmentofElectronicInformation
Abstract:
E-mailisoneofthemostusefulserviceitemsonInternet.SMTPandPOP3aretwoprotocolsintheE-mailservicetoreceiveanddispatchE-mails.Thispaperintroducestheprincipleandprotocolsofemail,whichdesignsanddevelopsanemailsystembasedonthoseprotocols.Afterhaveloggedonthesystemsuccessfully,usercandobasicoperations,e-mailmanagement,usermanagementanddatabaseconfiguration.Ifyouareanewuser,youneedtoregisterfirstly,andthenyoucansendorreceiveane-mailwithattachments.Besides,youcanalsouseadifferentSMTPorPOP3server.
Keywords:
E-mail;SMTP;POP3
第一章引言
1.1设计的目的和意义
电子邮件(ElectronicMail、E-mai1)又称电子信箱,它是—种用电子手段提供信息交换的通信方式,是应用于网络上的使用最广泛的网络功能之一。
E-mail不只局限于信件的传递,还可用来传递文件、声音及图形、图像等不同类型的信息。
电子邮件是“存贮转发式”的服务,属于异步通信方式。
电子邮件的发送几乎是即时的并且可以一次发送给多个人,发送和接收主要通过SMTP协议和POP3协议来实现。
电子邮件系统是一种新型的信息系统,是通信技术和计算机技术结合的产物。
它采用“存储转发”的机制来完成电子邮件的收发。
邮件服务器处理发送和接收消息的事项,并在处理电子邮件的过程中与其他机器进行通信。
客户端电子邮件软件一般都比WebMail服务器提供更为全面的功能。
使用客户端软件收发邮件,登录时不用下载网站页面内容,速度更快;使用客户端软件收到的和曾经发送过的邮件都保存在自己的电脑中,不用上网就可以对旧邮件进行阅读和管理。
同时实现多用户,多邮箱帐户,多POP3支持,对邮件管理更加快捷方便。
正是由于电子邮件客户端软件的种种优点,它将越来越会成为了人们工作和生活上进行交流必不可少的工具。
1.2电子邮件收发的原理和过程
1.2.1电子邮件的定义
电子邮件(electronicmail,简称E-mail,标志:
@)又称电子信箱、电子邮政,它是—种用电子手段提供信息交换的通信方式。
是Internet应用最广的服务:
通过网络的电子邮件系统,用户可以以非常快速的方式(几秒钟之内可以发送到世界上任何你指定的目的地),与世界上任何一个角落的网络用户联系,这些电子邮件可以是文字、图象、声音等各种方式。
电子邮件是整个网间网以至所有其他网络系统中直接面向人与人之间信息交流的系统,它的数据发送方和接收方都是人,所以极大地满足了大量存在的人与人通信的需求。
1.2.2电子邮件的工作过程
电子邮件的工作过程遵循客户-服务器模式。
每份电子邮件的发送都要涉及到发送方与接收方,发送方式构成客户端,而接收方构成服务器,服务器含有众多用户的电子信箱。
发送方通过邮件客户程序,将编辑好的电子邮件向邮局服务器(SMTP服务器)发送。
邮局服务器识别接收者的地址,并向管理该地址的邮件服务器(POP3服务器)发送消息。
邮件服务器识将消息存放在接收者的电子信箱内,并告知接收者有新邮件到来。
接收者通过邮件客户程序连接到服务器后,就会看到服务器的通知,进而打开自己的电子信箱来查收邮件。
通常Internet上的个人用户不能直接接收电子邮件,而是通过申请ISP主机的一个电子信箱,由ISP主机负责电子邮件的接收。
一旦有用户的电子邮件到来,ISP主机就将邮件移到用户的电子信箱内,并通知用户有新邮件。
因此,当发送一条电子邮件给一另一个客户时,电子邮件首先从用户计算机发送到ISP主机,再到Internet,再到收件人的ISP主机,最后到收件人的个人计算机。
ISP主机起着“邮局”的作用,管理着众多用户的电子信箱。
每个用户的电子信箱实际上就是用户所申请的帐号名。
每个用户的电子邮件信箱都要占用ISP主机一定容量的硬盘空间,由于这一空间是有限的,因此用户要定期查收和阅读电子信箱中的邮件,以便腾出空间来接收新的邮件。
1.2.3三种常见邮件协议
SMTP(SimpleMailTransferProtocol):
SMTP主要负责底层的邮件系统如何将邮件从一台机器传至另外一台机器。
POP(PostOfficeProtocol):
目前的版本为POP3,POP3是把邮件从电子邮箱中传输到本地计算机的协议。
IMAP(InternetMessageAccessProtocol):
目前的版本为IMAP4,是POP3的一种替代协议,提供了邮件检索和邮件处理的新功能,这样用户可以完全不必下载邮件正文就可以看到邮件的标题摘要,从邮件客户端软件就可以对服务器上的邮件和文件夹目录等进行操作。
IMAP协议增强了电子邮件的灵活性,同时也减少了垃圾邮件对本地系统的直接危害,同时相对节省了用户察看电子邮件的时间。
除此之外,IMAP协议可以记忆用户在脱机状态下对邮件的操作(例如移动邮件,删除邮件等)在下一次打开网络连接的时候会自动执行。
当前的两种邮件接受协议和一种邮件发送协议都支持安全的服务器连接。
在大多数流行的电子邮件客户端程序里面都集成了对SSL连接的支持。
除此之外,很多加密技术也应用到电子邮件的发送接受和阅读过程中。
他们可以提供128位到2048位不等的加密强度。
无论是单向加密还是对称密钥加密也都得到广泛支持。
1.3开发环境简介
VisualStudio2005是目前最流行的Windows平台应用程序开发环境,可以用来创建Windows平台下的Windows应用程序和网络应用程序,也可以用来创建网络服务、智能设备应用程序和Office插件。
C#是一门建立在C++和Java基础上的现代语言,是编写.NET框架的语言。
使用VisualStudio2005开发人员能够:
使用改进后的可视化设计工具、编程语言和代码编辑器,享受高效率的开发环境,在统一的开发环境中开发并调试多层次的服务器应用程序,使用集成的可视化数据库设计和报告工具,创建SQLServer2005解决方案等。
Microsoft为单独工作或在小型团队中的专业开发人员提供了两种选择,VisualStudio2005ProfessionalEdition和用于MicrosoftOffice系统的VisualStudio2005工具。
每种版本都在标准版的特性上进行了扩展,包括用于远程服务程序开发和调试、SQLServer2005开发的工具,以及完整的、没有限制的开发环境。
第二章SMTP和POP3协议及工作原理
2.1SMTP协议
SMTP(SimpleMailTransferProtocol),即简单邮件传输协议,它的工作过程有一下几个过程有:
Mail基本发送过程,向前传送邮件,确认邮箱名称和扩展邮件列表,发送到终端和打开关闭交换等。
其中使得SMTP工作的基本的命令有7个,分别为:
HELO,MAIL,RCPT,DATA,REST,NOOP和QUIT。
然而,SMTP也有自身的局限性,它只能传输ASCII文本文件,但对于一些二进制数据文件则需要进行编码后才能传输。
在SMTP协议中,电子邮件由三部分组成,信封、首部和正文。
1)信封
信封包括发信人的邮件地址和接收人的邮件地址,用两条SMTP命令指明。
①MAILFROM:
<发信人的地址>,告诉SMTP服务器发信人的地址。
②RCPTTO:
<收信人的地址>,告诉SMTP服务器收信人地址。
2)首部
首部中常用命令:
①FROM:
<姓名><邮件地址>,表明邮件发送者是谁。
②TO:
<姓名><邮件地址>,表明邮件接收者是谁。
③SUBJECT:
<邮件标题>,表明邮件的主题。
④DATE:
<时间>,表明发邮件的时间。
⑤REPLY-TO:
<邮件地址>,表明邮件的回复地址。
⑥Content-Type:
<邮件类型>,表明邮件包含文本、HTML超文本和附件的哪些类型。
⑦X-Priority:
<邮件优先级>,表明邮件的发送优先级。
⑧MIME-Version:
<版本>,MIME的意思是MultipurposeInternetMailExtensions,即多用途Internet邮件扩展标准,它对传输内容的消息、附件及其他的内容定义了格式。
3)正文
正文是邮件的内容。
首部以一个空行结束,再下面就是正文部分。
4)结束符号
邮件以“.”结束。
2.2POP3协议
接收电子邮件主要是利用POP(PostOfficeProtocol)协议,现在常用的是第三版,简称为POP3,默认端口为110。
通过POP3协议,客户机登录到服务器后,可以对自己的邮件进行删除或下载,下载后,电子邮件客户端软件就可以在本地对邮件进行处理。
1)POP3工作原理
客户端软件读取邮件之前,需要事先与服务器建立TCP连接。
连接成功后,POP3服务器会向该客户端发送确认消息,客户端等待服务器响应,并处理接收的信息,然后再接着发送下一个命令,如此往复多次,一直持续到连接终止。
这个过程经历了三个状态:
授权状态(AUTHORIZATION)、操作状态(TRANSACTION)和更新状态(UPDATE)。
2)POP3协议中的命令
每条命令均由命令和参数两大部分组成,而且每条命令都以回车换行结束。
命令和参数之间由空格间隔。
POP3服务器回送的响应信息由一个状态码和一个可能跟有附加信息的命令组成。
所有响应也以回车换行结束。
状态码有两种:
“确定”(“+OK”)和“失败”(“-ERR”)。
2.3BASE64编码与解码
BASE64编码是一种常用的将二进制数据转换为可打印字符的编码,采用64个基本的ASCII码字符对数据进行重新编码。
2.3.1BASE64编解码原理
将数据编码成BASE64编码时,以3字节数据为一组,转换为24bit的二进制数,将24bit的二进制数分成四组,每组6bit。
对于每一组,得到一个数字:
0-63,然后根据这个数字查表即得到结果。
表如下:
0A17R34i51z
1B18S35j520
2C19T36k531
3D20U37l542
4E21V38m553
5F22W39n564
6G23X40o575
7H24Y41p586
8I25Z42q597
9J26a43r608
10K27b44s619
11L28c45t62+
12M29d46u63/
13N30e47v
14O31f48w(pad)=
15P32g49x
16Q33h50y
比如有数据:
0x300x820x02
编码过程如下:
1)得到16进制数据:
308202
2)得到二进制数据:
001100001000001000000010
3)每6bit分组:
001100001000001000000010
4)得到数字:
12882
5)根据查表得到结果:
MIIC
BASE64填充:
在不够的情况下在右边加0。
有三种情况:
1)输入数据比特数是24的整数倍(输入字节为3字节整数倍),则无填充;
2)输入数据最后编码的是1个字节(输入数据字节数除3余1),即8比特,则需要填充2个"==",因为要补齐6比特,需要加2个00;
3)输入数据最后编码是2个字节(输入数据字节数除3余2),则需要填充1个"=",因为补齐6比特,需要加一个00。
举例如下:
对0x30编码:
1)0x30的二进制为:
00110000
2)分组为:
00110000
3)填充2个00:
001100000000
4)得到数字:
120
5)查表得到的编码为MA,另外加上两个==
所以最终编码为:
MA==
BASE64解码是其编码过程的逆过程。
解码时,将BASE64编码根据表展开,根据有几个等号去掉结尾的几个00,然后每8比特恢复即可。
2.3.2BASE64函数
在C#中实现BASE64编解码,有专门的编码类public class Base64Encoder{}和解码类public class Base64Decoder{},且在.net里面可以使用更简单的方法:
编码:
byte[]bytes=Encoding.Default.GetBytes("要编码的字符串");
Convert.ToBase64String(bytes);
解码:
byte[]outputb=Convert.FromBase64String("要解码的字符串");
stringorgStr=Encoding.Default.GetString(outputb);
第三章系统设计
3.1系统功能分析
本系统基于SMTP和POP3协议主要实现客户端对电子邮件的发送和收取,主要功能如下:
●基本操作(重新登录、修改密码、安全退出)
●邮件管理(邮件发送和邮件接收)
●用户管理(添加、修改、查询和删除用户)
●数据管理(对数据库进行配置)
3.2系统模块设计
根据系统功能,可以将系统分解成几个模块来设计应用程序界面,如图2-1所示。
图3-1系统功能图
3.3数据流程设计
图3-2数据流程图
3.4数据库逻辑结构设计
由以上功能分析可建立两个数据表,如表3.1和表3.2所示。
表3.1用户表
字段名
数据类型
是否可空
说明
userNo
文本
否
关键字,用户编号
userName
文本
否
用户名
Sex
文本
否
性别
mailbox
文本
否
邮箱名
password
文本
否
登录密码
表3.2邮件信息表
字段名
数据类型
是否可空
说明
用户编号
文本
否
关键字,用户编号
发件人
文本
否
发件人邮件
收件人
文本
否
收件人邮件
主题
文本
否
邮件主题
附件
文本
否
附件名称
第四章系统开发过程
4.1建立数据表
在Access数据库中建立上面逻辑结构表对应的用户表和邮件信息表,并将它保存在文件夹E:
\客户端邮件收发系统\bin\Debug中,如图4-1所示。
图4-1用户表
图4-2邮件信息表
4.2创建系统主窗体
打开VisualStudio2005开发平台,创建一个工程“客户端邮件收发系统”和一个空白窗体ManagementForm,我们将ManagementForm作为主窗体,并在其中加入菜单menuStrip1和控件pictureBox1,如图4-3所示。
图4-3系统主界面
编写程序使得用户点击菜单中事件时获得响应,转到相应窗口进行操作,例如:
子函数privatevoid用户登录ToolStripMenuItem_Click(objectsender,EventArgse){Dengludl=newDenglu();this.Hide();dl.ShowDialog();…}使得用户转到登录界面。
其它窗体的创建类似,在此省略。
4.3通过程序发送邮件
对于运行在没有专用邮件服务器的大多数客户程序而言,向SMTP服务器发送邮件需要提供用户名和密码,服务器验证成功后,才能进行发送或接收。
因此在程序中发送邮件,需要使用下面几个类:
1)System.Net命名空间下的NetworkCredential类
该类用于提供客户端身份验证机制的凭据,其中包括标准Internet身份验证方法(基本、简要、协商、NTLM和Kerberos身份验证)以及可以创建的自定义方法。
在邮件发送中,我们需要使用这个类提供SMTP服务器需要的用户名和密码,用法为:
NetworkCredentialmyCredentials=newNetworkCredential("发件人邮件地址","密码");
2)System.Net.Mail命名空间下的MailAddress类
该类用于提供发件人和收件人的邮件地址,常用形式为:
MailAddressfrom=newMailAddress("发件人邮件地址");
MailAddressto=newMailAddress("收件人邮件地址");
3)System.Net.Mail命名空间下的MailMessage类
该类用于提供邮件的信息,包括主题、内容、附件、邮件正文编码类型等,常用形式为:
MailMessagemessage=newMailMessage(from,to);
message.Subject=this.zhuti.Text;//主题
message.SubjectEncoding=System.Text.Encoding.UTF8;
message.Body=this.neirong.Text;//内容
message.BodyEncoding=System.Text.Encoding.UTF8;
//抄送,支持群发,多个邮件地址之间用半角逗号分开
if(this.chaosong.Text!
=""){message.CC.Add(this.chaosong.Text);}
//设置优先级
inti=this.youxianji.SelectedIndex;
if(i==0){message.Priority=System.Net.Mail.MailPriority.Normal;}
if(i==1){message.Priority=System.Net.Mail.MailPriority.High;}
if(i==2){message.Priority=System.Net.Mail.MailPriority.Low;}
4)System.Net.Mail命名空间下的Attachment类
该类用于提供附件对象,常用形式为:
AttachmentattachFile=newAttachment("文件名");
message.Attachments.Add(attachFile);
5)SmtpClient类
该类用于发送邮件,常用形式为:
SmtpClientclient=newSmtpClient("邮件服务器地址");
client.Send(message);
4.4通过程序接收邮件
客户端软件读取邮件之前,需要事先与服务器建立TCP连接。
连接成功后,POP3服务器会向该客户端发送确认消息,客户端等待服务器响应,并处理接收的信息,然后再接着发送下一个命令,如此往复多次,一直持续到连接终止。
这个过程经历了三个状态:
授权状态(AUTHORIZATION)、操作状态(TRANSACTION)和更新状态(UPDATE)。
同步TCP发送和接收数据的过程如下:
1)建立连接
intindex=textBoxUser.Text.IndexOf('@');
stringpop3Server="pop3."+textBoxUser.Text.Substring(index+1);
//建立与POP3服务器的连接,使用默认端口110
tcpClient=newTcpClient(pop3Server,110);
listBoxStatus.Items.Add("与pop3服务器连接成功");……
//获取Networkstream对象,以便通过建立好的连接发送和接收数据
networkStream=tcpClient.GetStream();
//得到读对象,并查找字节顺序标记,防止显示乱码
sr=newStreamReader(networkStream);
//得到写对象
sw=newStreamWriter(networkStream);
//读取服务器回送的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 smtp 协议 pop3 邮件 收发 系统 设计 实现 论文 正文