基于JavaMail的Web邮件验证系统设计
【优秀文档】基于Java Mail的电子邮件收发系统毕业设计.doc
【优秀文档】基于Java Mail的电子邮件收发系统毕业设
计.doc
1、••错误!未定义书签。
••…错误!未定义书签。
2••…错误!未定义书签。
666779910••错误!未定义书签。
12131415第1章概述1」讨论H的和意义1.2国内外进展趋势和现状1.3系统特点第2章相关技术和工具简介2.1Swing简介2.2JavaMail简介2.3Java平台简介2.4Eclipse简介第3章系统需求分析和总体设计.3.1用户对电子邮件系统的需求3.2产殆可行性分析3.3系统总体设计_331电子邮件系统的功能・3.3.2电子邮件收发过程・•・3.3.3服务器参数的设置第4章具体设计4.1登录功能的设计错误!未定义书签。
4.2发送邮件的设计错误!未定义书签。
4.3接收邮件的设计错误!未定义书签。
4.4邮件管理的设
2、计错误!未定义书签。
第5章系统功能的编码实现错误!未定义书签。
5.1用户登录界而的实现错误!未定义书签。
5.2主界面的实现195.3邮件配置界面的实现205.4发送邮件界面的实现215.5接收邮件界面的实现错误!未定义书签。
第6章系统实现的功能测试错误!未定义书签。
6.1登录测试错误!未定义书签。
6.2发送测试错误!未定义书签。
6.3接收邮件测试错误!未定义书签。
6.4查看邮件测试错误!未定义书签。
6.5删除邮件测试错误!未定义书签。
第7章总结错误!未定义书签。
第1页。
基于Java的邮件发送系统设计
基于Java的邮件发送系统设计1. 首先,我们需要了解什么是基于Java的邮件发送系统。
基于Java的邮件发送系统是一种通过使用Java编程语言来设计和实现的系统,旨在提供一种方便、高效和可靠的方式来发送电子邮件。
2. 在设计这样的系统时,需要考虑以下几个关键因素。
首先是邮件协议的选择。
常见的邮件协议包括SMTP(Simple Mail Transfer Protocol)、POP3(Post Office Protocol)、IMAP(Internet Message Access Protocol)等。
在设计基于Java的邮件发送系统时,我们需要选择一个适合的邮件协议来实现邮件的发送功能。
3. 其次是邮件的构建和格式。
在设计邮件发送系统时,我们需要考虑如何构建邮件的内容和格式。
通常,邮件由邮件头、邮件主体和附件组成。
邮件头包含了一些必要的信息,例如发件人、收件人、主题等。
邮件主体则包含了邮件的正文内容。
附件则是一些额外的文件或资源,可以附加在邮件中。
4. 在Java中,我们可以使用JavaMail API来实现邮件的发送功能。
JavaMail API是一个用于发送和接收邮件的Java标准扩展。
它提供了一套类和方法,可以方便地创建、发送和管理电子邮件。
5. 在设计基于Java的邮件发送系统时,我们需要首先导入JavaMail API的库文件,并创建一个JavaMail Session对象。
Session对象是一个用于与邮件服务器进行通信的会话对象。
我们可以通过设置Session对象的属性,如邮件服务器的主机名、端口号、认证信息等来配置邮件发送的参数。
6. 接下来,我们可以创建一个MimeMessage对象,用于表示邮件的内容。
MimeMessage是JavaMail API中表示邮件的一个类。
我们可以设置MimeMessage对象的各种属性,如发件人、收件人、主题、正文内容等。
7. 在设置完MimeMessage对象的属性后,我们可以使用Transport类来发送邮件。
基于java的邮件系统毕业设计论文 精品
武汉工程大学邮电与信息工程学院毕业设计(论文)说明书论文题目基于java的邮件系统目录摘要 (II)Abstract (III)第一章绪论 (1)1.1电子邮件系统简述 (1)1.2 电子邮件系统发展简史 (1)1.3电子邮件系统的工作过程 (2)第二章电子邮件系统分析 (4)2.1电子邮件系统的需求分析 (4)2.2 电子邮件系统的基本结构 (5)2.3构建邮件系统的准备工作 (5)第三章应用系统开发工具 (7)3.1开发语言简介 (7)3.2开发工具 (8)3.3开发软件的安装 (9)第四章系统的概要设计 (12)4.1 系统平台的规划 (12)4.2邮件系统主要功能的设计 (12)第五章系统的具体实现 (14)5.1 服务器平台的实现 (14)5.2 数据库的实现 (16)5.3 系统接口 (22)第六章系统安全 (26)第七章设计中遇到的问题不足与体会 (27)7.1设计中遇到的问题 (27)7.2 系统中的不足 (27)7.3 总结与体会 (27)致谢 (28)参考文献 (29)摘要本论文阐述了Web邮件系统所涉及的几个重要协议,对JavaMail API核心类进行了介绍,并给出了其中发送邮件功能的详细设计过程[1]。
JavaMail结合JSP的结构化特性,易于实现灵活高效、方便移植的Web 邮件应用程序。
基于Web技术的邮件服务平台的开发主要包括服务器的安装配置,用户信息数据库的建立,用户访问接口程序的开发三个方面[2]。
对于服务器需要稳定性好、安全可靠,负载能力强,对于数据库需要安全可靠、数据完整性强。
而对于用户接口应该具有能全面、友好易用等特点。
经过分析,我使用Windows XP作为Web服务器,使用james作为邮件服务器,使用mysql作为后台数据库,使用JSP、Java、HTML为用户接口开发工具,使用Java Mail API为邮件处理程序的应用接口。
并采用了目前流行的struts2 ,spring,hibernate,ajax 等技术,保证了用户接口程序良好的可扩展性和可维护性。
基于JAVA的安全WEB电子邮件系统
III
重庆大学硕士学位论文
1
引
言
1 引 言
1.1 研究背景
随着网络技术和软件技术的飞速发展,特别是 Internet/Intranet 出现及其相关 技术的迅速发展,信息革命带来了全球范围内市场竞争的日益加剧,这对传统的 办公和生活方式产生了巨大冲击。
1.1.1 电子邮件的发展历史和趋势
1972年, 毕业于麻省理工学院的Ray Tomlinson[1]博士开发了第一个电子邮件系 统。但是系统本身十分简单,只能实现邮件收发。 1979年,加州大学伯克利分校的学生Eric Allman[2]开发了SendMail[8]。 80年代后期,人们开始逐渐认识到电子邮件存在安全上的问题,最著名的一 个事件发生在1988年,当时Robert Morris[1,3]的“ Internet蠕虫” 利用SendMail的漏洞, 使很大一部分的Internet主机系统瘫痪。 90年代出现了提供免费电子邮件的邮件系统,Hotmail[3]就是第一个提供免费 电子邮件并取得成功的公司。它第一个提出了WEBMAIL的概念。 1998年3月,国内出现了第一家提供免费电子邮件网站。从那以后,伴 随着网络的迅速发展,电子邮件己经在Internet上得到普及。电子邮件以其使用方 便、快捷、容易存储和管理的特点很快被大众所接受,并成为人们交换信息的常 用工具。 电子邮件的发展经历了远程登录模式、专用客户端模式和基于WEB模式三种 阶段,其内容从纯文本向语音、视频融合。现阶段电子邮件的发展主要有以下四 个趋势: ① 与传统电信系统相结合。为寻呼机、PDA和掌上型电脑提供邮件服务。 ② 防病毒邮件。通过网络,特别是电子邮件,各种病毒在全球泛滥。将来的 邮件服务器应能发现并清除病毒,以阻止病毒的传播。 ③ 安全的电子邮件系统。邮件系统可以对邮件进行加密、解密处理,具有签 名与认证功能。 ④ 多媒体的电子邮件系统[2]。它将声音和图像有效地与电子邮件系统结合, 形成一个多媒体的邮件处理系统。
基于java的邮件服务器以及webmail的搭建
基于java的邮件服务器以及webmail的搭建⼀、准备⼯作局域⽹中有两台电脑都⽤Windows XPSP2系统+JDK1.6.0_02,⼀台PCA,⼀台PCB,PCA当服务器,PCB当客户端测试⽤,当然PCA也可同时充当客户端。
Apache James(Java Apache Mail EnterpriseServer)是Apache组织的⼦项⽬之⼀,完全采⽤纯Java技术开发,实现了SMTP、POP3与NNTP等多种邮件相关协议。
James也是⼀个邮件应⽤平台,可以通过Mailet扩充其功能,如Mail2SMS、Mail2Fax等。
James提供了⽐较完善的配置⽅案,尤其是关于邮件内容存储和⽤户信息存储部分,可以选择在⽂件、数据库或其他介质中保存。
James性能稳定、可配置性强,还是开源项⽬,所有源代码不存在版权问题,因此,James在项⽬中的应⽤⽇益⼴泛,现在常⽤版本为2.1,但最新版本2.3已经推出,在本⽂中,我们将仍以james-2.3.1作为介绍蓝本。
⼆、安装与配置James的安装配置过程⾮常简单。
第⼀步:安装JDK并配置JAVA_HOME请使⽤JDK1.3以上版本(在此使⽤jdk1.6.0_02),假设安装在D:installedtoolsJavajdk1.6.0_02,配置java_home在此就不多说了。
第⼆步:下载James,并解压可以到Apache⽹站上下载最新版本james-2.3.1,下载将得到⼀个压缩⽂件james-2.3.1.zip,⼤⼩为4.45M,将此包解压到D:installed toolsjames-2.3.1.第三步:需要使⽤的端⼝:Remote Manager Service started plain:4555POP3 Service started plain:110SMTP Service started plain:25NNTP Service started plain:119检查端⼝4555,110,25,119 是否被占⽤:netstat -an|grep 25netstat -an|grep 110如果被占⽤,linux下⼀般是sendmail程序占⽤,咨询别的应⽤是否使⽤了sendmail,如果没有⽤户在使⽤sendmail就可以停⽌sendmail:ps -eaf|grep sendmailservice sendmail stop直接双击运⾏D:installedtoolsjames-2.3.1 in un.bat,若启动⽆误,将提⽰如下C:Documents andSettingsAdministrator>runUsing PHOENIX_HOME: E:ProgramFilesjames-2.3.1Using PHOENIX_TMPDIR: E:Program Filesjames-2.3.1 empUsingJAVA_HOME:E:Program FilesJavajdk1.6.0_02Phoenix 4.2James Mail Server 2.3.1Remote Manager Service started plain:4555POP3 Service started plain:110SMTP Service started plain:25NNTP Service started plain:119FetchMail Disabled也有可能启动不了,并报JAVA_HOME找不到,如果没有配置JAVA_HOME需要指定JAVA_HOME,或者另⼀⽐较简单的⽅法是在D:installedtoolsjames-2.3.1 in un.bat中指定JAVA_HOME,修改后的run.bat如下:……remrem Determine if JAVA_HOME is set and if so then use itremset JAVA_HOME= D:installed toolsJavajdk1.6.0_02if not "%JAVA_HOME%"=="" goto found_java……修改完后再运⾏run.bat,应该就可以正常启动了,如果再出现什么问题就再去官⽅查找解决了。
JavaMailSender实现邮箱验证功能
JavaMailSender实现邮箱验证功能本⽂通过JavaMailSender实现邮箱注册验证中遇到的问题开始着⼿,给⼤家详细分析了其原理以及问题的解决办法。
使⽤邮箱注册验证,我们需要理清设计思路:问题⼀:注册信息提交后需要对填写的邮箱号发送邮件问题⼆:邮件到达时⽤户如何进⾏激活,是通过get请求还是获取验证码(本篇使⽤get接⼝激活)问题三:邮件激活如何设置有效时间通过以上三个问题,博主来帮助⼤家掌握JavaMailSender邮箱验证问题⼀我⾸先需要解决如何向指定邮箱号发送邮件在pom中加⼊如下依赖:<!--email--><dependency><groupId>javax.mail</groupId><artifactId>mail</artifactId><version>1.4.7</version></dependency>没错,我们使⽤javax拓展包下的mail依赖,所以代码中import别选错了本篇代码⼀切从简,⽅便⼤家读懂从上到下,我们先看接⼝:@RequestMapping(value = "myajaxRegister")@ResponseBodypublic String sendEmail(@RequestParam String email){User user = new User("luxiaotao","0331");new Thread(){@Overridepublic void run(){emailService.senEmail(user,email);}}.start();return "邮件已发送⾄您的邮箱,请激活";}因为是测试,所以博主制造了⽤户的假数据,拿到email才是关键新建线程来执⾏邮件发送⽅法是为了提⾼⽤户的体验试想下如果不为异步,⽤户需要等待邮件发送完才能跳转页⾯来看邮件发送的业务层⽅法:@Overridepublic boolean senEmail(User user,String email) {try {JavaMailSenderImpl mailSender = new JavaMailSenderImpl();mailSender.setHost("");mailSender.setUsername("填写⾃⼰的163邮箱账号");mailSender.setPassword("163邮箱密码");MimeMessage mailMessage = mailSender.createMimeMessage();MimeMessageHelper helper = new MimeMessageHelper(mailMessage,true,"GBK");helper.setFrom(mailSender.getUsername());helper.setTo(email);helper.setSubject("title");helper.setText("邮件发送成功");String emailToken = getEmailToken(user);String url = "<a href='http://localhost:8088/activateMail?emailToken="+emailToken+"'>激活"+"</a></br><h1>如果以上超连接⽆法访问,请将以下⽹址复制到浏览器地址栏中</h1><h2>http://localhost:8088/activateMail?emailToken="+emailToken+"</h2>"; helper.setText(url,true);mailSender.send(mailMessage);return true;}catch (Exception e){e.printStackTrace();return false;}}此⽅法解释:1.如果你的服务端邮箱是qq邮箱,则修改为:mailSender.setHost("");2.MimeMessageHelper是javax下mail的拓展类,如果你使⽤spring封装的mail则不需要。
基于Javamail的邮件收发系统-任务书
信息科学与工程学院09 届本科生毕业设计(论文)任务书学院信息科学与工程学院专业计算机科学与技术(师范)班级学号学生姓名指导教师一、论文题目基于Javamail的邮件收发系统二、内容和要求1.总体目标及性能(参数)要求(1)系统功能基本完善。
(2)系统具有良好的用户界面。
(3)系统具有较好的人机交互性、易于使用。
(4)系统可靠、稳定,具有一定的应用价值。
2.研究内容及拟采用的技术路线●研究内容:(1)邮件服务器的工作原理。
(2)DNS服务器的工作原理。
(3)SMTP、POP3、MIME协议。
(4)设计并实现基于Javamail的邮件收发系统,要求系统具有邮件接收、发送等基本功能。
●采用的技术路线:(1)开发工具采用Java+JavaMail API。
(2)数据库采用MySQL或SQL Server。
3.参考文献(10篇以上)[1] Java邮件开发详解。
张孝祥。
电子工业出版社,2007。
[2] Java高级程序设计。
王路群主编。
中国水利水电出版社, 2006 。
[3] Java课程设计。
黄明, 梁旭, 周绍斌编著。
电子工业出版社, 2006。
[4] Java开发与应用教程。
王吴迪, 赵枫朝等编著。
电子工业出版社, 2006。
[5] Java程序设计大学教程。
刘艺等编著。
机械工业出版社, 2006。
[6] Java数据库高级编程宝典。
陈天河编著。
电子工业出版社, 2005。
[7] Java程序设计与应用开发。
於东军等编著。
清华大学出版社, 2005。
[8] Java语言程序设计实训。
赵海廷主编。
武汉大学出版社, 2005。
[9] Java program design。
Cohoon, James P.,Davidson, Jack W。
McGraw-Hill Higher Education, 2004。
[10] Thinking in Java。
Eckel, Bruce。
Prentice Hall, c2000。
基于JavaMail的电子邮件系统的设计与实现
XXX本科毕业设计基于JavaMail的电子邮件系统的设计与实现邮件系统的设计与实现摘要在过去的几十年里,人们主要通过书信与相隔较远的人相互交流情感与思想。
而当今世界人们更多的是使用电子邮件,与传统的书信相比,电子邮件具有使用简易、投递迅速、收费低廉,易于保存、全球畅通无阻等优点。
本文设计并实现了一套邮件系统。
首先研究了与系统相关的技术,其次分析了系统功能、性能和数据的需求,设计了系统构架、系统功能和数据库,并实现了系统的主要功能。
本文的系统构架是基于浏览器/服务器的三层架构,使用Java 和S2SH框架开发而成。
在数据存储上使用了免费、开源、跨平台的MySQL数据库,邮件服务器使用了免费、开源的支持SMAP协议发送电子邮件和IMAP协议接收电子邮件的Apache James邮件服务器。
通过系统设计的用户注册和登陆、用户信息管理、邮件管理等模块,对邮件系统进行实现。
本系统具有功能丰富、结构清晰、运行效率高、数据访问效率高等优异性能,后期易于维护,可扩展性行比较好。
本系统还存在以下几个方面的工作尚需完善,即增加联系人管理模块,增强系统的稳定性,增强系统的安全性。
关键词:电子邮件,James邮件服务器,MySQL,Java,S2SH邮件系统的设计与实现Mail System Design and ImplementationAbstractIn the past few decades, people mainly exchange ideas with each other by letters. But today people are communicating with each other via e-mail, compared with the letter, e-mail correspondence with easy to use, fast delivery, low-cost, easy to store, the world's smooth and so on.This article has designed and implemented a mail system. First , study technologies related to the system. Then , analyses the system functions, performance and the data requirements, and also design the system architecture, system functions and database, and finally the main functions of the system come into shap . The system architecture is developed basing on a three-tier browser / server architecture, using Java and S2SH framework. The Data storage take use of free, open-source, cross-platform MySQL database. The mail server use the free, open-source Apache James mail server that supports SMAP protocol to send e-mails and the IMAP protocol to receive e-mails. Develop the E-mail system by different module of the system design, including user registration and login, the user information management, mail management.This system has the feature-rich, clear structure, high efficiency, excellent performance of high efficiency of data access, and it is not only easy to maintain in latter stages but also outstanding in it`s scalable sexual activity.There still exists problems that need farther perfection in The system from following aspects, like increasing the contact management module, enhancing the stability and security of the system.Keywords: E-mail, James mail server, MySQL, Java, S2SHXXX本科毕业设计目录1 绪论 (1)1.1 课题研发背景 (1)1.2 选题的意义 (1)1.3 发展现状 (1)1.4 本文结构安排 (2)2 技术与工具介绍 (3)2.1 框架简介 (3)2.2 开发工具简介 (4)2.3 电子邮件简介 (6)2.4 小结 (7)3 需求分析 (8)3.1 实际业务操作流程 (8)3.2 系统设计的目标 (8)3.3 系统需求分析 (9)3.3.1 功能需求分析 (9)3.3.2 性能需求分析 (10)3.3.3 数据库需求分析 (11)3.4小结 (11)4 总体设计 (12)4.1 数据库的设计 (12)4.1.1 概念结构设计 (12)4.1.2 逻辑结构设计 (13)4.2 小结 (15)5 详细设计与实现 (16)5.1 系统体系结构设计 (16)5.2 系统模块设计 (17)5.2.1 用户登录邮件系统设计 (17)5.2.2 注册新用户信息的设计 (18)5.2.3 用户找回密码信息设计 (18)5.2.4 用户发送电子邮件设计 (20)5.2.5 用户查看电子邮件设计 (21)邮件系统的设计与实现5.3 系统模块的实现 (22)5.3.1 用户登录邮件系统的实现 (22)5.3.2 注册新用户的实现 (23)5.3.3 用户找回密码的实现 (24)5.3.4 用户发送电子邮件的实现 (26)5.3.5 用户查看电子邮件的实现 (27)5.4 小结 (28)6 测试 (29)6.1 测试环境 (29)6.2 功能测试 (29)6.3 用户界面测试 (30)6.4 单元测试 (31)6.5 小结 (31)7 结束语 (32)7.1总结 (32)7.2展望 (32)附录 (33)参考文献 (38)致谢 (39)XXX本科毕业设计1 绪论1.1 课题研发背景电子邮件(简称E-mai1)又称电子信箱、电子邮政,它是—种用电子手段提供信息交换的通信方式。
基于JavaMailAPI的Web邮件系统开发
第28卷 第6期2006年6月武 汉 理 工 大 学 学 报JOURNAL OF WUHAN UNIVERSITY OF TECHNOLOGY Vol.28 No.6 Jun.2006基于JavaMail API 的Web 邮件系统开发钟 珞,刘 玲,夏红霞(武汉理工大学计算机科学与技术学院,武汉430070)摘 要: E mail 通信在Java 服务器编程中占有非常重要的地位。
阐述了Web 邮件系统所涉及的几个协议,对J2EE JavaM ail A PI 的结构框架和核心类进行了介绍,描述了系统架构,并给出了其中发送邮件功能的详细设计过程。
Java M ail 结合JSP 的结构化特性,易于实现灵活高效、方便移植的Web 邮件应用程序。
关键词: JavaM ail AP I; 电子邮件; 邮件发送中图分类号: T N 915.04文献标志码: A 文章编号:1671 4431(2006)06 0084 03Development Research of Web Mail System Based on JavaMail APIZ H ON G L uo ,LI U L ing,XIA H ong x ia(School o f Computer Science and T echnology ,Wuhan U niv ersity of T echno logy,Wuhan 430070,China)Abstract: E mail is the most important and ex tensive applicat ion of I nternet,it stands a v er y important position in Java server pr ogramming.T his paper first ex patiated on some protocols come down to the Web mail system,and then introduced the architecture and core classes of J2EE JavaM ail A PI.After that,the article presented the system framew ork and t he detailed de sign pr ocess of mail sending.In co nclusion,it can easily implement flexible,high effective and transplantable W eb mail applica tions with JavaM ail and structured JSP.Key words: JavaM ail API ; E mail; mail sending收稿日期:2006 03 23.基金项目:教育部高校行动计划智能科学与技术(2004XD 03).作者简介:钟 珞(1957 ),男,教授,博士生导师.E mail:liuling com随着互联网的发展,人们使用最多的服务之一就是电子邮件,用户最初只能通过Outlook 、Foxm ail 等客户端软件来收发自己的邮件。
深思软件基于JAVA邮件系统解决方案邮件系统解决方案
深思软件基于JAVA邮件系统解决方案-邮件系统解决方案系统简介随着因特网的不断普及,国内的用户数呈指数级增长。
为了满足不断增长的信息交换的需要,作为因特网信息交流中的支柱电子邮件系统变的越来越庞大。
传统的基于单机,使用系统帐号作为邮件帐号的邮件系统已难以适应网站的需求。
特别是免费电子邮件服务的出现,更使这一问题变得越来越突出。
深思软件技术股份公司自主设计开发了适合中国国情的大规模电子邮件系统――深思Web邮件系统(飞马快递),用以解决这一日益突出的问题。
飞马快递Web邮件系统由于采用了三层体系结构等先进的设计理念并基于IBM公司的Websphere先进电子商务平台,该系统在安全性、可靠性、灵活性和可扩展性等方面独占鳌头,很好地解决了一些长期困扰电子邮件服务商的问题,如垃圾邮件处理、邮件列表、数据统计等功能等问题。
另外,该系统还具有其他强大的增值功能,可以运行在大多数操作系统平台(如Solaris、Linux、AIX、NT等)以及支持大量并发用户、管理功能完善、安全措施完备等特点。
飞马快递Web邮件系统是专为大中小型企业网站、大中型免费电子邮件服务商、企业集团设计的电子邮件系统。
系统模块划分及功能介绍飞马快递Web邮件系统由邮件服务器模块、后台管理模块和Web邮件模块三部分组成。
1. 邮件服务器模块常规电子邮件服务器提供SMTP、POP3、IMAP4等基础的电子邮件服务。
邮件服务器系统本身负责处理底层的数据传输与规则处理功能。
邮件系统拥有以下功能:别名管理当存在一对多的电子邮件地址情况时,别名管理就起到其作用。
通过别名,管理员可以将多个电子邮件地址影射到一个邮箱里面。
方便处理。
黑名单管理对于黑名单的用户,系统会自动拒绝其发送邮件的请求,这个限制垃圾邮件有非常良好的效果。
转发管理对发件人的电子邮件地址进行控制。
检查发件人的电子邮件地址是否在允许的范围内,从而限制了垃圾邮件对系统性能的影响。
多种传输协议支持飞马快递Web邮件系统可以同时支持X.400和UUCP等协议传递邮件,具有非常良好兼容性。
基于JavaMail的Web邮件客户端的设计与实现
关键 词 : 电子 邮件 J v Mal A S a a iJ F JP
E ma ( l t n al电子 邮件 ) 网络用 户最 — i E co im i l er c , 是 常使用的网络服务之一l。人们收发 邮件 常用的方式 l J
M al n b e p ia in i e a l d Ap l to - c
的框架来 构建 邮件和 消息系统。JvMa 体 系结构分 aa i l
为 三个 层次 , 即抽 象 类 层 、 现 类 层 和 JF(aa e n 实 A Jv B a s A i t nF me okJv B a s 动框 架 ) , 结 构 dv i r w r, a e n 活 ao a a 其
周红静 ( 湖南商学院 计算机与 电子工程 学院 湖南长沙 40 0 ) 12 5
摘 要 :分析 了 Jv Ma 的体 系架构, aa i l 阐述 了在 Wi o s 台上 We n w 平 d b邮件客 户端 系统的设计 方法 , 并给 出 了详 细的实现过程 。该 We b邮件客户端 实现 了邮件的接收、 送、 发 管理 以及个人通讯 录等功能 , 具有较 强的
如图 1 示。 所
() 3 轻量级的类和接 口使任何 应用程序加入基、 () 数
据 类 型 以及 传输 协 议 。
其 中抽 象 类 层 和 实 现 类 层 由 J vMal P 提 供 , aa i I A 而
J F 由 J vMal P提 供。抽 象类层支 持 邮件处理 A 不 aa iA I 功能 。实现类 层 实现 了部分 Ie t 准 , RC 2 n me 标 t 如 F82 和 MI 。J F ME A 用来封 装消息数据和处理与数据交互的 命令。JvMa 的层次体 系结构 允许 客户使 用相 同的 aa i l
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Data Base Technique •数据库技术Electronic Technology & Software Engineering 电子技术与软件工程• 179【关键词】JavaMail 电子邮件 Web 高并发随着互联网领域各项技术迅速地发展,电子邮箱已经成为现代人常用的一种联系工具,并且涉及的领域也越来越广泛,个人邮箱有时可以看作是一个身份认证的标识,可以用来进行身份确认,以及进行相关的联系活动。
现在有很多WEB 开发都需要JavaMail ,例如,用户注册后,网站发送一封激活邮件进行验证;用户过生日,系统发送生日祝福邮件;将最新活动和优惠以邮件的形式告知会员等等。
这些应用都需要开发人员使用编程发送邮件。
本次设计就是基于JavaMail 实现用户注册时,通过邮件对账户进行认证的完善登陆系统。
通过邮箱激活注册账户,既保证了对相关账户的安全性,也拓展了信息推广的途径,这方式已经成为了很多IT 公司用户注册必经步骤。
整个设计采用B/S 架构,在设计过程中,我们首先搭建并配置邮箱服务器端和邮件客户端,数据库采用MySQL ,在数据库中建立相应数据表,导入相应的JavaMail 的jar 包,在eclipse 平台上引用相应的API ,并考虑到一定的高并发性,采取多线程,用JA V A 语言进行开发邮箱验证功能。
我们在最后的实验结果检测过程中,会检测分析到系统成功实现邮件发送、接收,以及点击链接后的激活功能,本次系统的设计也将对研究人员在用户安全性设计方面有一定的帮助。
1 JavaMail基于JavaMail 的Web 邮件验证系统设计文/卜凡港JavaMail 是由SUN 公司发布,提供给开发者处理电子邮件相关的编程接口。
JavaMail 支持常用的SMTP 、POP3、IMAP 等邮件协议,开发人员使用JavaMail 编写邮件程序时,无需考虑底层的通信细节(Socket),可以更加有效地实施邮件传输操作,同时JavaMail 所提供的API 也能够支持创建出各种复杂MIME 格式的邮件内容。
JavaMail 的API 结构图如图1所示。
JavaMail API 提供了消息、地址和头文件等基本的邮件系统对象,即使针对不同的邮件协议,不同的厂商,都可以从JavaMail 所提供的一系列接口中找到相应的实现类,从而满足开发者多方面需求。
2 邮件收发协议协议是用来规定双方应该满足什么样的格式,回什么样格式的数据,才可以进行正常通讯的一个规定。
当我们在邮箱服务器上申请空间,进行邮件的传输接收,都是默认了一种通讯协议,以便通讯的正常进行。
如果让JavaMail 与邮件服务器通信,就需要相应的协议支持,该部分称为服务提供者接口,也就是JavaMail 自身需要的协议支持。
2.1 SMTP协议SMTP ,即简单传输协议,它是一组用于由源地址到目的地址传送邮件的规则,控制信件的中转方式,属于TCP/IP 协议簇,帮助每台计算机在发送或中转信件时找到下一个目的地。
通过SMTP 所指定的服务器,可以把E-mail 在较短时间内寄到收件人的服务器上,通常把处理用户SMTP 请求的邮件服务器称为SMTP 服务器,SMTP 服务器则是遵循SMTP 协议的发送邮件服务器,用来发送或中转电子邮件,SMTP 服务器的默认端口号为25。
2.2 POP3协议POP3,即邮局协议版本3,主要用于支持使用客户端远程管理在服务器上的邮件。
如果用户想从邮箱服务器中获得或接受一封电子邮件的话,连上邮件服务器后,也需要遵循一定的通讯格式,而POP3协议就是用来定义这种通讯格式。
通常把处理POP3请求的服务器称为POP3服务器,它的默认端口号为110。
3 邮件验证方案分析移动互联网迅速发展,社交联系得越密图1:邮件收发过程图2:邮件收发过程180 •电子技术与软件工程 Electronic Technology & Software Engineering数据库技术• Data Base Technique切,社交手段越多样化,而电子邮箱也是当今社交重要方式之一,所以JavaMail 在产品开发中必不可少,而了解邮箱收发过程也是很多开发人员容易忽视的一点。
通过对邮件收发过程,邮件验证逻辑,以及并发量的解决方案分析可以使系统设计得更加完善。
3.1 邮箱收发过程分析邮箱收发过程遵循之前所讲解的邮件协议,并根据相应协议所对应的服务器进行通信,具体收发过程如图2所示。
假设现在有两个邮箱,我们想让163邮箱向126邮箱发送一封邮件,让163邮箱账户和密码通过客户端进行链接,客户端可以是网页版或者是软件版,登陆到邮箱服务器上,连接邮箱服务器中的SMTP 服务器上,然后进行写邮件操作,将写好的邮件同,163邮箱的SMTP 服务器连接到126邮箱的SMTP 服务器上,把这封邮件发送到对方邮箱服务器的SMTP 上,于是126邮箱将会把这封邮件存储到其内在的存储空间里面。
收邮件过程,用户通过注册时的用户名和密码,连接到相应邮箱服务器中的POP3服务器上,找到这封邮件,并返回到客户端,用户就能看到对方发送过来的邮件,整个过程反之亦然。
3.2 验证逻辑分析在设计过程中,在数据表中设置state 字段,0为激活,1为非激活状态,当用户第一次注册后,数据表中传入相应字段,state 处于非激活状态,然后发送一封激活邮件到对应的注册邮箱,用户点击邮件中的激活链接后,state 由非激活状态变为激活状态。
如图3所示。
邮件验证的逻辑,相对而言较为简单,在实现注册功能时,服务器产生激活码,并根据开发者的配置,给注册用户发送含有激活码链接的激活邮件,通过点击链接,改变state 的取值从而实现用户激活,但如果遇上系统新开放注册,这将会产生一定量的并发量,若一定时间段内,用户一窝蜂地进行注册操作,将有可能造成SMTP 服务器产生拒绝421等状态,接下来将对并发量的解决方案进行分析。
3.3 并发量分析由于注册功能不会像电商秒杀功能一样,瞬间有上千万甚至上亿的并发量,所以考虑节约资源,且可抗住一定量的并发量,我们可将注册页面放入CDN ,将发送功能采用多线程进行封装,从而达到一定量的抗并发效果。
具体多线程实现逻辑如图4所示。
本次设计采用ThreadPoolExecutor 线程池来实现多线程,并在线程池中设定同时运行的线程数量,线程池维护线程所允许的空闲时间的单位,以及缓冲队列,从而达到对线程池的参数的设置以及优化,在参数设置基础上,多的任务可以进行排队,从而可以实现了多线程的JavaMail 并发。
4 Web邮件系统编码实现本套系统的实现采用的是MVC 框架结构,这是目前相对主流且成熟的框架,我们首先在MySQL 数据库中建立数据库和相应的用户表,配置C3P0数据池链接,导入所需要的Jar 包,根据MVC 结构,依次从实体类,DAO 层,再到业务层,最后编写注册Servlet 和激活Servlet 实现系统设计功能。
4.1 DAO层的实现用户注册,首先调用数据访问层中定义的方法,通过JDBC 将数据存入到数据库用户表中,state 状态为0值,并随机生成一串编码,并通过程序生成含有激活码的字符串链接,然后再给用户发送一封含有该激活码链接的邮件,此时通过DAO 层与数据库的交互,部分代码如下:Connection conn=DBUtil.getConnection();String sql ="insert into user(username,email,password,state,code) values(?,?,?,?,?)";P r e p a r e d S t a t e m e n t p s t m t =c o n n.prepareStatement(sql);pstmt.setString(1, user.getUsername());pstmt.setString(2, user.getEmail());pstmt.setString(3, user.getPassword());pstmt.setInt(4, user.getState());pstmt.setString(5, user.getCode());num=pstmt.executeUpdate();DBUtil.close(conn,pstmt, null);DBUtil 是封装好的数据库连接类,通过编写一条SQL 语句,经预编译进行处理,然后一一对应进行传值,从而实现与数据库的交互。
4.2 业务层的实现根据MVC 结构,我们将业务层首先规定相应方法的接口,再在业务层中定义实现类,通过继承这些接口,实现业务层中定义的相应方法。
在注册功能方面,利用正则表达式验证邮箱是否符合邮箱格式,若符合生成激活码,把相应数据存入到数据库中,保存成功后通过线程方式给用户发送一封邮件,再通过调用DAO 层中激活用户的方法实现激活功能,其中部分代码如下所示:S t r i n g c o d e =C o d e U t i l .generateUniqueCode(); User user=new User(username,email,p assword,0,code);U s e r D a o u s e r D a o =n e wUserDaoImpl();if(userDao.save(user)>0){ n e w T h r e a d (n e w MailUtil(email, code)).start();return true;}在抗并发上,整个事务逻辑是通过调用线程池接口,开启线程,实现用户的注册和激活功能,并在一定程度上,可以抗住一定量的用户注册产生的并发量。
4.3 Servlet的实现本次设计中,为了实现Web 应用程序,不收到CGI 程序性能的限制,我们通过采用JavaServlet 来实现对数据库中的JDBC API 进行访问,本设计涉及到的最主要的两部分Servlet 是实现用户注册Servlet 和激活Servlet ,我们需将其首先继承HttpServlet 类,并复写doGet 和doPost 方法,其中部分代码如下:S t r i n g u s e r N a m e =r e q u e s t .getParameter("username");S t r i n g p a s s w o r d =r e q u e s t .getParameter("password");图3:邮件验证过程图4:多线程执行过程Data Base Technique •数据库技术Electronic Technology & Software Engineering 电子技术与软件工程• 181String email=request.getParameter("email");U s e r S e r v i c e u s e r S e r v i c e =n e w UserServiceImpl();if(userService.doRegister(userName,passwo rd,email)){request.setAttribute("msg","注册成功,请登录邮箱激活账号");}else{ request.setAttribute("msg","注册失败,请检查相关信息");}request.getRequestDispatcher("/result.jsp").forward(request, response);在doPost 方法中接收数据,将数据进行封装,调用业务,实现业务实现类,将用户信息和激活码传递过去,根据激活码查询用户,更改用户状态,将状态0变为1,同时将激活码在相应数据设置为NULL ,然后调用request 的getRequestDispatcher 方法进行页面跳转。