版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程设计任务书学生姓名: 专业班级: 计算机科学与技术学院 指导教师: 工作单位:计算机科学与技术学院 题 目: 收发无附件的邮件 初始条件:理论:学完“操作系统”和“计算机网络”课程,掌握一种高级程序设计语言(c+、c#、java、delphi)及集成开发平台的使用。实践:计算机学院科学系实验中心提供计算机、软件平台和网络环境。如果自己有计算机可以在其上进行设计。要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)(1) 实现收发无附件的邮件。(2)主要功能: 1 邮箱用户可以通过导游栏轻松便捷的进入各个功能选项。2 完全的网上收发邮件、存储邮件、邮件草稿箱、删
2、除邮件功能。 3 邮箱用户可自行更改自己邮箱密码、设定个性化签名功能。 4 群发邮件功能, 给所有用户群发邮件功能;并提供对组的群发功能。(3)应用所学计算机网络课程中的知识,利用网络实用程序实现其协议。(4)编制好网络实用程序后,设计若干用例,上机测试并分析所设计的程序。(5)设计报告格式按附件要求书写。课程设计报告书正文的内容应包括:设计题目;需求说明(要求、功能简述)或问题描述;设计说明(简要的分析与概要设计);详细的算法描述;源程序与执行结果(含测试方法和测试结果);使用说明;设计心得(设计的特点、不足、收获与体会);展望(该实用程序进一步改进扩展的设想)。时间安排:设计时间一周: 周
3、1:查阅相关资料。周2:系统分析,设计。周3周4:编程并上机调试周5:撰写课程设计报告。设计验收安排:16周星期五8:00起到计算机学院科学系实验中心进行上机验收。设计报告书收取时间:16周的星期五下午5:00之前。指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日1. 设计题目实现收发无附件的邮件2需求分析2.1要求通过一个实际网络协议或网络应用系统的分析与总体设计,综合运用应用所学计算机网络课程中的知识,利用网络实用程序实现其协议,加深对网络知识理解和掌握。具体要求邮箱用户可以通过导游栏轻松便捷的进入各个功能选项,完全的网上收发邮件、存储邮件、删除邮件功能。2.2功能简述本系
4、统是一个web端的邮件收发系统,凡是具有pop3协议的收件邮箱和smtp协议的发件邮箱,均可通过本系统来收发邮件。本系统实现的基本功能如下:1.登录:登录访问邮箱地址。2.退出:退出本系统。3.收取邮件:收取当前邮箱中的所有邮件列表。4.阅读邮件:阅读某一封邮件的内容。5.写邮件:撰写将要发送的邮件内容,包括收件人地址和正文内容。6.通讯录:维护通讯录列表,发送邮件时可以从通讯录中选择收件人。7.个性签名:可以添加多个签名,在发送邮件时可以选择使用某一个签名,在发送的邮件中就会显示此签名。本系统是一个多用户的系统,每一个拥有邮箱地址的用户都可以通过该系统管理自己的邮箱。3.设计说明3.1简要分
5、析 基于以上功能描述,只有一种角色可以使用该系统,即拥有邮箱地址的普通用户。对于日常收发邮件的过程,一般分为四部分:发送邮件到服务器;在网络上传送邮件到信箱,此即smtp服务器所实现;接收并存储邮件并给用户提取,此即pop3服务器所实现;从pop3服务器上收取邮件。实现方面主要集中在第一四部分收发邮件的客户端上,其中和服务器的对话主要由简单邮件发送协议smtp和邮局协议pop3规定其标准。(1)smtp协议smtp模型采用的是c/s(客户端/服务器)模式用户直接使用的是用于编写和发送的客户端软件,而通常的smtp服务器运行在源何处呢个站点上,c/s之间的通信通过tcp/ip协议进行。与smtp
6、服务器连接的端口号一般为25。smtp会话过程的特点: 会话过程全部由发送文本完成,过程为交互式的请求应答模式; 命令是文本形式的; 每次会话服务器总是返回一定的响应码,表示客户端的请求是否被正确地回答; 会话过程有一定的顺序。(2) pop3协议通过pop,可以从internet提供商的服务器下载邮件,并通过邮件程序来阅读邮件,或者处理邮件。pop3协议(邮局协议第3版)适用于c/s结构,其通信也是建立tcp连接的,通信过程中,pop3客户端向pop3服务器发送命令并等待回应,pop3命令同smtp命令一样,均采用命令行形式,用ascii码表示。与pop3服务器连接的端口号一般为110。3.
7、2概要设计 基于功能需求,主要设计两个流程: 文件夹收取邮件阅读邮件 撰写邮件发送邮件 此外包括两个模块的划分:通讯录:增加联系人,修改联系人,删除联系人。个性签名:增加个性签名,修改个性签名和删除个性签名。 综上,设计系统软件结构图如图1所示:图1 系统软件结构图4.详细算法描述4.1数据库设计描述4.1.1实体分析通讯录和个性签名是本系统的主要管理对象。通讯录实体:记录某一个邮件地址用户的通讯录列表,包括用户的邮件地址,联系人邮件地址,联系人姓名和联系人档案。个性签名实体:记录某一个邮件地址用户的个性签名列表,包括用户的邮件地址,签名名称和签名说明。4.1.2数据表设计表1和表2是数据库的
8、表结构。表1 通讯录表tblrecipient编号字段名称字段类型是否为空说明1mailchar(255)否用户的邮件地址2recipientchar(255)否联系人邮件地址3recipientnamechar(255)是联系人姓名4memotext是联系人档案表2 个性签名表tblsignature编号字段名称字段类型是否为空说明1mailchar(255)否用户的邮件地址2signaturechar(255)否签名名称3memotext是签名说明4.2界面设计描述4.2.1登录和退出系统页面作为邮件收发系统的入口,需要填写的内容包括:接收地址,发送地址,信箱,登录密码等。页面如图2所示。
9、系统首先取得用户登录时输入的7个表单变量的值,然后设置系统使用数据库的连接地址,将这些变量保存在session中,登录以后就可以直接从session变量中取得这些输入和设置值。登录系统后,在导航栏有一个“退出”按钮,单击该按钮会跳转到页面,并传递一个logoff参数,值为yes。退出系统即要使所有的登录参数失败,因此此时清空用户输入的用户名,密码,域名,pop3接收地址和smtp发送地址参数,然后输出login.asp文件中的登录表单,依然显示如图2的登录界面。图2 登录界面当单击“登录”按钮时会跳转到login.asp,由该文件的头部代码执行验证。根据传递过来的login参数是否存在来确定进
10、入验证的分支,验证的代码如下:if (request.form(login).count 0)server.scripttimeout = 30;session.timeout = 30;session.contents(mailboxmaxsize) = 30; /-以mb字节为单位session.contents(mailusername)=server.htmlencode(request.form(username);session.contents(mailpassword)=server.htmlencode(request.form(password);session.conte
11、nts(domain) = server.htmlencode(request.form(domain);session.contents(mail_suffix)=server.htmlencode(+request.form(domain);session.contents(pop) = server.htmlencode(request.form(pop);session.contents(popport) = server.htmlencode(request.form(popport);session.contents(smtp) = server.htmlencode(reques
12、t.form(smtp);session.contents(smtpport)=server.htmlencode(request.form(smtpport);session.contents(mail) = server.htmlencode(request.form(username) + + request.form(domain);session.contents(maildbconnectionstr) = driver=microsoft access driver (*.mdb);dbq= + server.mappath(data.mdb);var pop;pop = ser
13、ver.createobject(jmail.pop3);trypop.connect(session.contents(mailusername),session.contents(mailpassword),session.contents(pop),session.contents(popport);response.redirect(frame.htm);catch(e)response.write(window.alert(未连接上邮件服务器,可能是用户名或密码错误););4.2.2收取邮件mail.asp设置的页面是用来浏览当前登录邮箱所接收到的邮件列表。该列表显示了登录邮箱中的所
14、有邮件。对于不在有保留价值的邮件,可以选择删除。单击发件人姓名或地址,或主题栏均可详细浏览某个邮件的详细内容。1.建立连接使用jmail组件建立与该邮箱的连接:var pop; pop = server.createobject(jmail.pop3); pop.connect(session.contents(mailusername),session.contents(mailpassword),session.contents(pop),session.contents(popport);该连接使用的是pop3协议。2.计算总页数预设每页最多可列出的邮件数,从邮箱连接对象pop中取出邮件
15、总页数pagecount,根据总页数与每页设置显示的邮件数目相除,取得要显示的邮件页数:var pagesize = 15; /-每页最多可列出的邮件数 var pagecount; /-邮件总页数 if (pop.count % pagesize) != 0) pagecount = math.floor(pop.count / pagesize) + 1; else pagecount = math.floor(pop.count / pagesize);4.2.3阅读邮件在邮件列表显示页面中,单击某一封邮件的发件人或邮件的标题,即可跳转到邮件的阅读页面,如图7所示。图7 阅读邮件1.显示
16、邮件描述信息:该部分显示邮件的收件人地址,发件人地址,发送时间,抄送时间,邮件标题和邮件级别。首先建立邮件的连接对象,然后根据该连接取得当前所选邮件id的邮件内容对象:var msg; msg = server.createobject(jmail.message); msg = pop.messages.item(request(messageindex);取得邮件发送者的字符串:if (msg.fromname != msg.from) sender = msg.fromname + + msg.from; else sender = msg.from;取得邮件接收者的字符串:var re
17、cipients;recipients = server.createobject(jmail.recipients);recipients = msg.recipients;接着输出该邮件取得的各部分信息: 收 件 人 发 件 人 发送时间 抄 送 标 题 2.邮件的正文内容:直接输出邮件对象msg的正文内容:4.2.4写邮件并发送本页用来发送邮件到输入的邮件地址,发送内容包括:收件人,抄送,暗送,主题等。可手输,或在地址簿选择邮件地址添加到收件人,抄送,暗送中。邮件有“普通”,“加急”,“不急”3中,在签名栏选择愿意让接收方看到的签名,最后单击“发送”按钮即可发送。如图8所示:图8 写邮件
18、和发送邮件页面要显示联系人数据表中的用户首先建立于数据库的连接,然后取得数据库表tblrecipient中当前用户的记录;要显示签名数据表中的记录,首先建立于数据库的连接,然后取得数据库表tblsignature中当前用户的记录;邮件的级别表示邮件的轻重缓急,它使用一个数字表示,数字越小表示越重要,1表示最重要的信件,这里给出了三个级别:普通加急不急该页面首先会判断是否有接收人,如果有则发送该邮件:if(request.form(“mto”).count0)然后创建一封邮件的对象,设置编码为gb2312,并设置该邮件的域,发送用户名,密码和邮件地址这些用户登录时输入的参数。var msg =
19、server.createobject(jmail.message); msg.charset = gb2312; msg.maildomain = session.contents(domain); msg.mailserverusername = session.contents(mailusername); msg.mailserverpassword = session.contents(mailpassword); msg.from = session.contents(mail);判断用户是否设置了签名,如果有则设置签名为发送用户名,设置邮件的级别,最后重要的一步发送邮件:msg.
20、priority = request.form(level);发送成功则会显示发送报告。4.2.5通讯录和个性签名1.通讯地址项是为了在发送信件时快速加入收件人的接收地址。用户可以在每次发送邮件时,从联系人列表框中通过姓名选择需要的邮件地址。图9 通讯录该页面定义了一个查询函数,来查询数据库表tblrecipient中当前用户的记录,用户身份根据e-mail地址来确认,并将查询的结果集使用组合字符串的方式返回:function getrecipientbymail(mail)var contmp = server.createobject(adodb.connection);contmp.op
21、en(session.contents(maildbconnectionstr);var cmdtmp = server.createobject(adodb.command);var rstmp = server.createobject(adodb.recordset);cmdtmp.activeconnection = contmp;rstmp.source = cmdtmp;cmdtmp.commandtype = 1;cmdtmp.commandtimeout = 10;cmdtmp.commandtext = select * from tblrecipient where tbl
22、recipient.mail = + mail +;rstmp.cachesize = 10;rstmp.cursortype = 3;rstmp.cursorlocation = 3;rstmp.locktype = 3;rstmp.open();var strresult = ;while (! rstmp.eof)strresult = strresult + + + rstmp.fields(recipient).value + + + rstmp.fields(memo).value + + + rstmp.fields(recipientname).value + +
23、+ rstmp.movenext();rstmp.close();contmp.close();return strresult;这样在下面直接调用函数即可输入该用户的通讯录列表:单击“删除”按钮即可删除联系人。此时会:调用页面.asp代码执行删除:deleterecipient(session.contents(mail),request.querystring(delrecipient);这里调用了recipient_func.asp中的删除函数。单击“新建”按钮即可添加新的联系人。此时会调用recipient_func.asp代码执行新建:function addrecipient(ma
24、il,recipient,recipientname,memo,recipientgroup)此外还可对联系人的信息进行编辑修改,主要调用function editrecipient函数。2.signature.asp用来设置用户签名,签名项是为了在发送信件时加入用户标识,使发出的邮件在信尾可以出现相应的签名。用户可以在每次发送邮件时,从下拉框中选择需要的签名,如图10所示。图10 个性签名该页面定义了一个查询函数,来查询数据库表tblsignature中当前签名的记录,查询的结果集使用组合字符串的方式返回:function getsignaturebymail(mail)var contmp
25、 = server.createobject(adodb.connection);contmp.open(session.contents(maildbconnectionstr);var cmdtmp = server.createobject(adodb.command);var rstmp = server.createobject(adodb.recordset);cmdtmp.activeconnection = contmp;rstmp.source = cmdtmp;cmdtmp.commandtype = 1;cmdtmp.commandtimeout = 10;cmdtmp.
26、commandtext = select * from tblsignature where tblsignature.mail = + mail +;rstmp.cachesize = 10;rstmp.cursortype = 3;rstmp.cursorlocation = 3;rstmp.locktype = 3;rstmp.open();var strresult = ;while (! rstmp.eof)strresult = strresult + + + rstmp.fields(signature).value + + + rstmp.fields(memo).value
27、+ + + + ;rstmp.movenext();strresult = strresult + ;rstmp.close();contmp.close();return strresult;这样在下面直接调用函数即可输入该用户的个性签名列表:5. 测试结果5.1 增改联系人列表5.2 设计个性签名 5.3 收发邮件(包括群发) 首先以用户yeahsnoopy登录到系统中,依据左侧导航栏中选择相应的操作,都可以实现相应的功能。单击“撰写邮件”,在右边页面中显示相应界面后填写有关信息,如图11,然后点击“发送”,即可将邮件发送出去,如图12。图11 邮件群发图12 群发成功查看任一邮箱,如 y
28、eahflyaway,便可在邮件列表中看到接收结果,如图13:图13 邮件接收6.使用说明1.将mail设置为iis的一个虚拟站点,并注册lyfupload组件和jmail组件。2.访问首页网址http:/localhost/mail/index.asp,输入自己的接收地址、发送地址及端口号,邮箱账号和密码,默认的接收地址是,端口默认为110;发送地址是,端口号默认为25。3.进入到系统主界面,可在左边的菜单中选择操作。4.点击收件箱,查看自己已接收到的邮件,可对文件进行删除操作。5.选择写邮件,可以编写邮件正文,并从地址簿中选择一个或多个收件人,然后附上自己的个性签名,将邮件发送出去。6.进入通讯录,可以对已有的联系人进行编辑,也可以增加新的联系人。7.个
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版罗马柱装饰工程总承包合同4篇
- 二零二五版在建工程抵押担保合同模板3篇
- 2025版个人汽车转让及二手车交易平台合作与售后服务合同4篇
- 2025年度落水管施工工程保险与理赔合同4篇
- 二零二五年度健康医疗大数据安全保障合作协议4篇
- 二零二五版股权回购项目担保及投资决策合同3篇
- 2025年食用菌种植基地与销售渠道联盟合同2篇
- 二零二五年度广告公司广告活动策划合同3篇
- 2025年高速公路车辆运输通行费结算协议范本4篇
- 2024版消防系统维保合同范本
- 劳务协议范本模板
- 人教版(2024)数学七年级上册期末测试卷(含答案)
- 2024年国家保密培训
- 2024年公务员职务任命书3篇
- CFM56-3发动机构造课件
- 会议读书交流分享汇报课件-《杀死一只知更鸟》
- 2025届抚州市高一上数学期末综合测试试题含解析
- 公司印章管理登记使用台账表
- 砖厂承包合同签订转让合同
- 思政课国内外研究现状分析
- 2023年公务员多省联考《申论》题(广西B卷)
评论
0/150
提交评论