欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    课程设计论文实现收发无附件的邮件.doc

    • 资源ID:4870063       资源大小:390.86KB        全文页数:16页
    • 资源格式: DOC        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    课程设计论文实现收发无附件的邮件.doc

    课程设计任务书学生姓名: 专业班级: 计算机科学与技术学院 指导教师: 工作单位:计算机科学与技术学院 题 目: 收发无附件的邮件 初始条件:理论:学完“操作系统”和“计算机网络”课程,掌握一种高级程序设计语言(C+、C#、Java、Delphi)及集成开发平台的使用。实践:计算机学院科学系实验中心提供计算机、软件平台和网络环境。如果自己有计算机可以在其上进行设计。要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)(1) 实现收发无附件的邮件。(2)主要功能: 1 邮箱用户可以通过导游栏轻松便捷的进入各个功能选项。2 完全的网上收发邮件、存储邮件、邮件草稿箱、删除邮件功能。 3 邮箱用户可自行更改自己邮箱密码、设定个性化签名功能。 4 群发邮件功能, 给所有用户群发邮件功能;并提供对组的群发功能。(3)应用所学计算机网络课程中的知识,利用网络实用程序实现其协议。(4)编制好网络实用程序后,设计若干用例,上机测试并分析所设计的程序。(5)设计报告格式按附件要求书写。课程设计报告书正文的内容应包括:设计题目;需求说明(要求、功能简述)或问题描述;设计说明(简要的分析与概要设计);详细的算法描述;源程序与执行结果(含测试方法和测试结果);使用说明;设计心得(设计的特点、不足、收获与体会);展望(该实用程序进一步改进扩展的设想)。时间安排:设计时间一周: 周1:查阅相关资料。周2:系统分析,设计。周3周4:编程并上机调试周5:撰写课程设计报告。设计验收安排:16周星期五8:00起到计算机学院科学系实验中心进行上机验收。设计报告书收取时间:16周的星期五下午5:00之前。指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日1. 设计题目实现收发无附件的邮件2需求分析2.1要求通过一个实际网络协议或网络应用系统的分析与总体设计,综合运用应用所学计算机网络课程中的知识,利用网络实用程序实现其协议,加深对网络知识理解和掌握。具体要求邮箱用户可以通过导游栏轻松便捷的进入各个功能选项,完全的网上收发邮件、存储邮件、删除邮件功能。2.2功能简述本系统是一个Web端的邮件收发系统,凡是具有POP3协议的收件邮箱和SMTP协议的发件邮箱,均可通过本系统来收发邮件。本系统实现的基本功能如下:1.登录:登录访问邮箱地址。2.退出:退出本系统。3.收取邮件:收取当前邮箱中的所有邮件列表。4.阅读邮件:阅读某一封邮件的内容。5.写邮件:撰写将要发送的邮件内容,包括收件人地址和正文内容。6.通讯录:维护通讯录列表,发送邮件时可以从通讯录中选择收件人。7.个性签名:可以添加多个签名,在发送邮件时可以选择使用某一个签名,在发送的邮件中就会显示此签名。本系统是一个多用户的系统,每一个拥有邮箱地址的用户都可以通过该系统管理自己的邮箱。3.设计说明3.1简要分析 基于以上功能描述,只有一种角色可以使用该系统,即拥有邮箱地址的普通用户。对于日常收发邮件的过程,一般分为四部分:发送邮件到服务器;在网络上传送邮件到信箱,此即SMTP服务器所实现;接收并存储邮件并给用户提取,此即POP3服务器所实现;从POP3服务器上收取邮件。实现方面主要集中在第一四部分收发邮件的客户端上,其中和服务器的对话主要由简单邮件发送协议SMTP和邮局协议POP3规定其标准。(1)SMTP协议SMTP模型采用的是C/S(客户端/服务器)模式用户直接使用的是用于编写和发送的客户端软件,而通常的SMTP服务器运行在源何处呢个站点上,C/S之间的通信通过TCP/IP协议进行。与SMTP服务器连接的端口号一般为25。SMTP会话过程的特点: 会话过程全部由发送文本完成,过程为交互式的请求应答模式; 命令是文本形式的; 每次会话服务器总是返回一定的响应码,表示客户端的请求是否被正确地回答; 会话过程有一定的顺序。(2) POP3协议通过POP,可以从Internet提供商的服务器下载邮件,并通过邮件程序来阅读邮件,或者处理邮件。POP3协议(邮局协议第3版)适用于C/S结构,其通信也是建立TCP连接的,通信过程中,POP3客户端向POP3服务器发送命令并等待回应,POP3命令同SMTP命令一样,均采用命令行形式,用ASCII码表示。与POP3服务器连接的端口号一般为110。3.2概要设计 基于功能需求,主要设计两个流程:· 文件夹收取邮件阅读邮件· 撰写邮件发送邮件 此外包括两个模块的划分:·通讯录:增加联系人,修改联系人,删除联系人。·个性签名:增加个性签名,修改个性签名和删除个性签名。 综上,设计系统软件结构图如图1所示:图1 系统软件结构图4.详细算法描述4.1数据库设计描述4.1.1实体分析通讯录和个性签名是本系统的主要管理对象。·通讯录实体:记录某一个邮件地址用户的通讯录列表,包括用户的邮件地址,联系人邮件地址,联系人姓名和联系人档案。·个性签名实体:记录某一个邮件地址用户的个性签名列表,包括用户的邮件地址,签名名称和签名说明。4.1.2数据表设计表1和表2是数据库的表结构。表1 通讯录表tblRecipient编号字段名称字段类型是否为空说明1Mailchar(255)否用户的邮件地址2Recipientchar(255)否联系人邮件地址3RecipientNamechar(255)是联系人姓名4MemoText是联系人档案表2 个性签名表tblSignature编号字段名称字段类型是否为空说明1Mailchar(255)否用户的邮件地址2Signaturechar(255)否签名名称3MemoText是签名说明4.2界面设计描述4.2.1登录和退出系统页面作为邮件收发系统的入口,需要填写的内容包括:接收地址,发送地址,信箱,登录密码等。页面如图2所示。系统首先取得用户登录时输入的7个表单变量的值,然后设置系统使用数据库的连接地址,将这些变量保存在session中,登录以后就可以直接从session变量中取得这些输入和设置值。登录系统后,在导航栏有一个“退出”按钮,单击该按钮会跳转到页面,并传递一个logoff参数,值为yes。退出系统即要使所有的登录参数失败,因此此时清空用户输入的用户名,密码,域名,POP3接收地址和SMTP发送地址参数,然后输出Login.asp文件中的登录表单,依然显示如图2的登录界面。图2 登录界面当单击“登录”按钮时会跳转到login.asp,由该文件的头部代码执行验证。根据传递过来的login参数是否存在来确定进入验证的分支,验证的代码如下: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.Contents("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(Request.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 = Server.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("<script language=javascript>window.alert("未连接上邮件服务器,可能是用户名或密码错误");</script>");4.2.2收取邮件mail.asp设置的页面是用来浏览当前登录邮箱所接收到的邮件列表。该列表显示了登录邮箱中的所有邮件。对于不在有保留价值的邮件,可以选择删除。单击发件人姓名或地址,或主题栏均可详细浏览某个邮件的详细内容。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中取出邮件总页数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.显示邮件描述信息:该部分显示邮件的收件人地址,发件人地址,发送时间,抄送时间,邮件标题和邮件级别。首先建立邮件的连接对象,然后根据该连接取得当前所选邮件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 Recipients;Recipients = Server.CreateObject("JMail.Recipients");Recipients = msg.Recipients;接着输出该邮件取得的各部分信息:<TABLE class=whitesmoke borderColor=#eeeeee width="96%" align=center border=1> <TBODY> <TR> <TD align=middle width=80>收 件 人 <TD colSpan=2><%=ReTo%></TD> <TR> <TD class=gray align=middle>发 件 人 <TD class=white colSpan=2><%=Sender%></TD> <TR> <TD class=gray align=middle>发送时间 <TD class=white colSpan=2><%=msg.Date%></TD> <TR> <TD class=gray align=middle>抄 送 <TD class=white colSpan=2><%=ReCC%></TD> <TR> <TD class=gray align=middle>标 题 <TD class=white colSpan=2><%=msg.Subject%></TD></TR></TBODY></TABLE>2.邮件的正文内容:直接输出邮件对象msg的正文内容:<%=msg.Body%>4.2.4写邮件并发送本页用来发送邮件到输入的邮件地址,发送内容包括:收件人,抄送,暗送,主题等。可手输,或在地址簿选择邮件地址添加到收件人,抄送,暗送中。邮件有“普通”,“加急”,“不急”3中,在签名栏选择愿意让接收方看到的签名,最后单击“发送”按钮即可发送。如图8所示:图8 写邮件和发送邮件页面要显示联系人数据表中的用户首先建立于数据库的连接,然后取得数据库表tblRecipient中当前用户的记录;要显示签名数据表中的记录,首先建立于数据库的连接,然后取得数据库表tblSignature中当前用户的记录;邮件的级别表示邮件的轻重缓急,它使用一个数字表示,数字越小表示越重要,1表示最重要的信件,这里给出了三个级别:<SELECT name="level" size="1"><OPTION selected value=3>普通</OPTION><OPTION value=1>加急</OPTION><OPTION value=5>不急</OPTION></SELECT>该页面首先会判断是否有接收人,如果有则发送该邮件:if(Request.Form(“MTO”).Count>0)然后创建一封邮件的对象,设置编码为gb2312,并设置该邮件的域,发送用户名,密码和邮件地址这些用户登录时输入的参数。var msg = 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.Priority = Request.Form("level");发送成功则会显示发送报告。4.2.5通讯录和个性签名1.通讯地址项是为了在发送信件时快速加入收件人的接收地址。用户可以在每次发送邮件时,从联系人列表框中通过姓名选择需要的邮件地址。图9 通讯录该页面定义了一个查询函数,来查询数据库表tblRecipient中当前用户的记录,用户身份根据E-mail地址来确认,并将查询的结果集使用组合字符串的方式返回:function GetRecipientByMail(Mail)var contmp = 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.CommandText = "SELECT * FROM tblRecipient WHERE tblRecipient.Mail = '" + Mail +"'"rsTmp.CacheSize = 10;rsTmp.CursorType = 3;rsTmp.CursorLocation = 3;rsTmp.LockType = 3;rsTmp.open();var strResult = ""while (! rsTmp.EOF)strResult = strResult + "<TR class=gray>"+ "<TD>" + rsTmp.Fields("Recipient").Value + "</TD>"+ "<TD>" + rsTmp.Fields("Memo").Value + "&nbsp;</TD>"+ "<TD>" + rsTmp.Fields("RecipientName").Value + "</TD>"+"<TDalign=middle><Ahref="recipient_edit.asp?recipient=" + rsTmp.Fields("Recipient").Value + ""><IMG alt=修改 src="images/change.gif" border=0></A></TD>"+ "<TD align=middle><A href="javascript:delrecipient('" + rsTmp.Fields("Recipient").Value + "');"><IMG alt=删除 src="images/delete.gif" border=0></A></TD>"+ "</TR>"rsTmp.MoveNext();rsTmp.close();contmp.Close();return strResult;这样在下面直接调用函数即可输入该用户的通讯录列表:<%GetRecipientByMail(Session.Contents("mail")%>单击“删除”按钮即可删除联系人。此时会:调用页面.asp代码执行删除:DeleteRecipient(Session.Contents("mail"),Request.QueryString("delrecipient");这里调用了recipient_func.asp中的删除函数。单击“新建”按钮即可添加新的联系人。此时会调用recipient_func.asp代码执行新建:function AddRecipient(Mail,Recipient,RecipientName,Memo,RecipientGroup)此外还可对联系人的信息进行编辑修改,主要调用function EditRecipient函数。2.signature.asp用来设置用户签名,签名项是为了在发送信件时加入用户标识,使发出的邮件在信尾可以出现相应的签名。用户可以在每次发送邮件时,从下拉框中选择需要的签名,如图10所示。图10 个性签名该页面定义了一个查询函数,来查询数据库表tblSignature中当前签名的记录,查询的结果集使用组合字符串的方式返回:function GetSignatureByMail(Mail)var contmp = 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.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 + "<TR class=gray>"+ "<TD>" + rsTmp.Fields("Signature").Value + "</TD>"+ "<TD>" + rsTmp.Fields("Memo").Value + "</TD>"+ "<TD align="middle"><A href="signature_edit.asp?signature=" + rsTmp.Fields("Signature").Value + ""><IMG alt="修改" src="images/change.gif" border="0"></A></TD>"+ "<TD align="middle"><A href="javascript:delsignature('" + rsTmp.Fields("Signature").Value + "');"><IMG alt="删除" src="images/delete.gif" border="0"></A></TD>"+ "</TR>"rsTmp.MoveNext();strResult = strResult + "</TBODY></TABLE>"rsTmp.close();contmp.Close();return strResult;这样在下面直接调用函数即可输入该用户的个性签名列表:<%GetSignatureByMail(Session.Contents("mail")%>5. 测试结果5.1 增改联系人列表5.2 设计个性签名 5.3 收发邮件(包括群发) 首先以用户yeahsnoopy登录到系统中,依据左侧导航栏中选择相应的操作,都可以实现相应的功能。单击“撰写邮件”,在右边页面中显示相应界面后填写有关信息,如图11,然后点击“发送”,即可将邮件发送出去,如图12。图11 邮件群发图12 群发成功查看任一邮箱,如 yeahflyaway,便可在邮件列表中看到接收结果,如图13:图13 邮件接收6.使用说明1.将mail设置为IIS的一个虚拟站点,并注册LyfUpload组件和Jmail组件。2.访问首页网址http:/localhost/mail/index.asp,输入自己的接收地址、发送地址及端口号,邮箱账号和密码,默认的接收地址是,端口默认为110;发送地址是,端口号默认为25。3.进入到系统主界面,可在左边的菜单中选择操作。4.点击收件箱,查看自己已接收到的邮件,可对文件进行删除操作。5.选择写邮件,可以编写邮件正文,并从地址簿中选择一个或多个收件人,然后附上自己的个性签名,将邮件发送出去。6.进入通讯录,可以对已有的联系人进行编辑,也可以增加新的联系人。7.个性签名设置。8.退出系统。7.心得体会本次课程设计主要是实现收发无附件的邮件,相对带附件的简单一些,不过也有些额外的设计要求,如存储和随时查看邮件,设计个性签名和常用联系人邮箱簿,加密抄送等。 该课设是基于ASP平台开发的,其中感受最深的就是它不同于那些即时解释程序一条一条解释,而是将程序在服务端首次运行时进行编译,具体哪个模块出错可以即时发现定位,挺形象的,同时也深刻体会到了JMail组件的强大,不仅可以完成收发邮件,还可以内置群发邮件的对象并支持PGP加密,当然也支持附件添加,不过本课设没涉及到,相信基于该组件,实现方面相对于VC平台发面会简单很多。但具体实现中是利用LyfUpload组件来实现邮件的上传, Jmail组件来完成邮件的发送,当然使用前都得先注册这两个组件。 其实自己平常经常会用到邮件,不过基本上不会深究sina,网易,Outlook那些软件到底是怎样发送和取得E-mail的,只要会用就行。不过通过本次课设,接触到其低层次,深入了解其实现原理,当然不只是熟悉对信元信头等字段的规定,还了解了SMTP协议和POP3协议提供的命令及如何具体实现客户端和服务器的链接。 总之,本课设基本实现了实验要求,也能实现抄送、暗送等功能,虽然没有专业邮箱那么高端,不过作为客户端口,还算有自己完整的一套系统和相对友好的界面,在浏览器下运行时也不差。8.展望 相比于平时用的那些邮箱,感觉自己的课设最能提升的地方就是界面美化和支持附件的上下载,当然附件可能不只是文档文件,也可以是音频视频,界面美化方面可以将其做成明信片等格式,此外文本编码和文字格式等的设计也可以更多元化一点,相信实现这些方面可能更费功夫,不过有不满才有动力去圆满。武汉理工大学计算机网络课程设计说明书本科生课程设计成绩评定表班级:姓名:学号:序号评分项目满分实得分1学习态度认真、遵守纪律102设计分析合理性103设计方案正确性、可行性、创造性204设计结果正确性405设计报告的规范性106设计验收10总得分/等级评语:注:最终成绩以五级分制记。优(90-100分)、良(80-89分)、中(70-79分)、及格(60-69分)、60分以下为不及格指导教师签名:2011 年6月10日16

    注意事项

    本文(课程设计论文实现收发无附件的邮件.doc)为本站会员(sccc)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开