学术论文网
基于Android邮件JavaMail技术的设计与实现
发布日期:2024-10-19 17:40:22

  1引言

  1.1研究背景

  如今移动市场上,IOS和Android已经成为了两个最主流的操作系统。截止至2015年第三季度,全球智能手机市场份额iOS和Android总共占了近96%。其中iOS仅占了12.3%,而Android则占了83.6%的市场份额,独占鳌头。水涨船高,Android应用的市场前景也是相当可观,形式一片大好。

  电子邮件是一种现代企业办公或者个人信息通信中不可缺少的一种互联网服务。通过网络的电子邮件系统,用户可以高效、快速、低开销的与互联网中的任一用户进行联系。电子邮件作为现代信息通信中最重要的一种通信手段,一方面是因为电子邮件传递的信息多元化,除了可以传递纯文本外,还可以传递图片、音频、视频等多媒体内容;另一方面,电子邮件本身具有便利性,异步性以及低成本性等诸多优点[1]。

  随着移动互联网的发展,办公人员不在局限于坐在办公室里面办公了。办公人员可能需要经常出差,那么异地远程办公的模式就形成了。这是一种社会进步的需要,也是互联网发展的新行情。为了适应异地远程办公的需求,移动端的办公成为一种行业的迫切需要。与此同时,个人用户对于信息的处理也越来越多的依赖电子邮件,比如订阅主题新闻,订阅商品推送信息等等。因此建立和完善一个基于Android系统的邮件收发系统是亟待解决的问题。

  1.2研究分析

  1.2.1Android现状

  Android移动手机平台发布于2008年9月,它是由谷歌占据主导地位的开放手机联盟OHA(Open Handset Alliance)提出的一个开放性系统。Android是一个开源的基于Linux的操作系统,它的出现给原本移动手机大佬诺基亚Symbian操作系统一个巨大的冲击,仅两年多时间,在2011年第一季度首次超过Symbian操作系统。因为Android平台是开源,倡导开放和自由的理念使得其得到了快速的发展。

  到目前为止,占据市场份额最高的两个移动操作系统分别是谷歌的Android和苹果的IOS。在Gartner(一个权威市场调研机构)最新的统计报告中,截止2016年4月份,IOS系统的市场份额为18.8%,而Android平台却高达68.28%,并且还处于上涨的状态。这充分表明了Andriod广受欢迎。

  1.2.2 Android邮件客户端现状

  Gmail for Android是Google旗下的邮件客户端软件,在国内外市场都拥有很高的占有率。Gmail除了支持常用的邮件功能如:邮件收发、管理等功能。还支持基于GCM服务的Pushmail功能。不过由于国内网络环境存在一定的设计缺陷,该服务在国内很不稳定。

  Aico Mail是一款国产手机邮件客户端,最大的特色就是支持多媒体邮件的收发,并且UI设计简洁人性化,符合用户的行为习惯。不过它并没有考虑到邮件的安全性问题,没有对邮件的传输进行加密的机制。

  尚邮是一款国内著名的手机邮件客户端,该产品支持各大手机操作系统,并提供了优秀的Pushmail解决方案。其在Android平台的客户端使用了AES 128位加密算法,使邮件在传输过程中邮件内容得到了加密。不过尚邮公司在2013年由于经营不善倒闭,所有平台的客户端被强迫终止使用。

  1.2.3可行性分析

  现阶段的Android平台开发技术已经相当成熟,Android手机的普及率也相当广,网上相应的资料以及专业论坛很多,同时在技术上学校导师和同学的指导和帮助下,对于完成该邮件系统的开发在技术上是可行的。

  1.3研究目的和意义

  目前常用的Web电子邮箱登陆方式存在很大弊端:

  1.每次登陆前都需要先通过浏览器访问电子邮箱运营商网站;

  2.电子邮箱的账号和密码需要频繁输入;

  3.如果存在多个邮箱,又是不同电子邮箱运营商的话,容易忘记。

  现有Web电子邮箱登陆方式存在的不足都可以通过电子邮箱客户端来解决。因此,针对这些不足,本课题结合Android平台的优势对Android邮件客户端进行相应的研究和设计。

  2系统开发技术及环境

  2.1Android平台介绍

  Android是由Andy Rubin主导研发的基于Linux的手机操作系统,翻译成中文是安卓或者安致。Google于2005年收购Android后,投入巨资引导手机联盟共同研发Android,并于2007年底发布Android源代码,以免费开源形式开放出去。这一举措掀起了全球Android热潮,吸引了大批的Android开发人员,并且逐年疯狂上升,现今Android操作系统在全球智能手机市场的占有率稳居第一[2]。

  Android手机操作系统采用分层架构来简化复杂性,从最底层到最高层分别是Linux内核层、系统运行库层、应用框架层、应用层等四层,底层为上层提供相应的服务[3],Android系统体系结构图如图2.1所示。

  图2.1 Android系统分层体系架构图

  (1)Linux 内核层

  Linux 内核层是Android体系架构中的最底层,系统的核心服务如进程管理、内存管理、驱动模型等都基于此层,它在软件栈与硬件之间,与硬件直接接触,同时又为上层提供服务接口,起承上启下的作用。

  (2)系统运行库层

  该层包括系统程序库和Android运行环境两部分构成。Android运行环境又是由Dalvik虚拟机和系统核心库两部分组成。系统程序库层主要功能是为上层也就是应用框架层提供了访问底层硬件资源的能力。系统核心库继承了Java核心库丰富的功能[4]。

  Android应用程序并不是直接运行在Android系统之上的,而是运行在Dalvik虚拟机上的,操作系统会为每个Android应用程序分配一个Dalvik虚拟实例,以此赋予了Android强大的跨平台特性。相比基于栈的JVM虚拟机,基于寄存器的Dalvik编译更快,所需开发指令更少,运用更加简单方便[5]。

  应用框架层

  该层提供了各类丰富的API,开发者可以调用这些API来实现应用程序的相应功能。Android系统自带有九种组件,开发人员可以利用这些应用组件进行快速的开发,降低了开发难度,提高了开发效率。

  应用层

  该层是Android体系机构的最高层,直接与用户接触。Android系统的所有应用程序都属于此层,比如系统集成的拨号应用、相机应用、浏览器等,同时也包括开发者所开发的应用程序,如微信、支付宝、淘宝等。

  2.2电子邮件开发技术

  2.2.1电子邮件原理

  电子邮件系统应用C/S架构,用户向邮件服务器注册账户并利用客户端提交发送或接收电子邮件的请求,而邮件服务器扮演的角色就是为这些用户提供存储转发邮件的服务。邮件客户端是用户访问邮件服务器获得邮件服务的媒介。邮件客户端通过邮件传输协议SMTP、POP3、IMAP等与邮件服务器进行通信,完成发送邮件和收取邮件的功能。邮件服务器实现了电子邮件的基本功能,即邮件收发和邮件存储。不同邮箱平台用户之间收发邮件的过程如图2.2所示。

  MTA(邮件传输代理)、MDA(邮件投递代理)和MUA(用户代理)这三个角色构成了电子邮件系统,它提供了电子邮件系统的服务支持。MTA是指邮件服务器。如果发件人使用新浪邮箱发送一封邮件给网易邮箱的收件人,那么发件人的MTA就是新浪邮件服务器,它会将该邮件转发给网易邮箱服务器,也就是收件人的MTA。MDA可以认为是MTA的一个子模块,实际上运营商也是将MDA和MTA集合在一起,MDA负责把从MTA接收到的邮件放置到收件人邮箱所在平台的服务器,也就是我们常说的收件箱。MUA就是指邮件客户端,本课题所开发的系统即是MUA。

  图2.2邮件系统收发过程拓扑图

  2.2.2基础邮件协议

  邮件协议是指邮件传输过程中,服务器与服务器之间、客户端与服务器之间所必须遵循的邮件规则,以保证电子邮件的正常递送。目前主流的邮件协议有两种:SMTP(简单邮件传输协议)和POP3(邮局协议版本3)。

  SMTP协议是位于应用层的协议,基于可靠传输的TCP协议,默认端口号是25。SMTP是电子邮件发送与中转的标准协议,用于提供可靠且有效的电子邮件传输[6]。电子邮件经过邮件客户端到邮件服务器或两个邮件服务器之间的邮件转发都需要使用SMTP协议。

  POP3协议定义在RFC1939文档中,用于接收电子邮件,是Internet上电子邮件的第一个离线协议标准[7]。POP3协议离线阅读模式,电子邮件需要先从邮件服务器上下载到本地,然后才能在本地进行阅读和编辑,同时因为不需要在服务器上同步编辑,减轻了服务器的负担。POP3协议的默认端口号为110。

  2.3 JavaMail技术

  Sun公司提供了一个处理邮件的JavaMail源开发包,使用JavaMail开发者可以很方便高效的进行邮件客户端之类的应用程序的开发。开发过程中,只需要将JavaMail API的mail.jar包导入到开发环境中,便可以调用mail.jar中的类。在JavaMail中对于开发邮件软件客户端几个常用的重要类:

  1.Session类。每一次邮件通信都至少有一个Session,在邮件发送之前必须建立Session对象。Session类具体包含了邮件服务器的主机名、端口号、协议类型等信息;

  2.Message类。该类用于保存电子邮件的信息,包含发件人地址、收件人地址、邮件内容等,通常使用子类MimeMessage实例化对象,同时必须传入一个邮件Session参数;

  3.Address类。该类是一个抽象类,通常使用该类的子类来实例化邮件发件人或者收件人地址;

  4.Transport类。该类的实例表示了使用SMTP协议的发送对象;

  5.Store类。该类的实例表示了使用POP协议的接收对象;

  6.Authenticator类。该类用于验证,也是一个抽象类,包含用户名和密码,用于验证来邮件服务器。

  2.4 开发环境和工具

  本课题所开发的邮件客户端系统运行在Android系统之上,是邮件技术在Andriod平台上的一个应用。本系统在Windows 7环境下,基于Java语言,通过Eclipse,结合ADT开发。所开发的邮件客户端系统能够运行在Android 2.3以上版本。

  3系统需求分析与概要设计

  通过第一章和第二章的背景现状和相关技术的介绍,本章将分为功能和非功能需求对本系统进行详细的分析,并在需求分析之后对本系统进行概要设计。

  3.1系统需求分析

  3.1.1系统功能需求

  本课题的设计目标是开发出一个Android邮件客户端系统,无论是任何平台的邮件客户端系统,其核心功能都是提供给用户邮件接收、邮件发送,以及对邮件进行简单的管理。系统的功能需求如图3.1所示。

  图3.1 系统功能需求

  从程序设计者的角度来说,完整列出一个系统的需求拥有哪些功能,哪些功能能满足用户的基本需求,哪些功能能提高用户的使用体验,这在软件工程中是非常重要的[9]。这里对用户各个需求模块的具体功能做出了详细的分析。

  联系人:包含新增联系人和存储联系人信息到联系人列表,方便发送邮件的时候调用;

  收件箱:包含邮件的接收和邮件的分类处理。具体有未读邮件用来存储未读的邮件;已读邮件用来存储已经阅读过的邮件;星标邮件用来存储打上星标的重要邮件,方便用户对于重要邮件的查找;已删除邮件用来存放删除了的邮件,防止用户误删除了重要邮件;垃圾邮件存储一些没用的广告垃圾邮件等。

  发件箱:包含编写新的邮件,同时邮件支持附件的上传,并和邮件一起发送出去。附件可以是图像、音乐、视频等多媒体。同时,邮件如果未编写完毕,可以保存到草稿箱,方便以后接着继续编辑;

  多账户支持:可以同时添加多个邮箱账户,方便进行多个邮箱平台账户切换和邮件管理;

  3.1.2系统非功能需求

  系统非功能需求是指本系统在提供用户给邮件收发等基本功能之外,同时还要求系统具备其它非业务需求但影响系统性能和用户体验的需求。本课题分别从系统性能要求、系统安全性、系统稳定性和系统可移植性四个指标对系统的非功能需求逐一进行详细分析。

  3.1.2.1 系统性能要求

  系统性能要求可以说是评价一款软件设计好坏的重要标准,性能指标达到要求了才能减少与用户交互等待的时间,满足用户体验上的需求。具体包含的要求范围非常广,包括运行效率是否高效,占用的软硬资源尽可能的少,系统响应时间尽可能的迅速等。通过体验并分析了大量同类产品以及从用户角度出发,提出了下面两项系统性能指标:

  刷新收邮件箱、加载某一封邮件内容并打开该邮件的操作响应时间应在3秒之内,滑动窗口界面进行切换的响应时间不得超过1秒;

  针对多账户的设计需求,至少支持用户可以登录5个邮箱账户,并对相应邮箱账户的邮件进行管理。同时应该能调用100个联系人进行发送和回复;

  3.1.2.2 系统安全性

  电子邮件在人们日常生活工作中作为一种重要的通讯工具,邮件内容必然会包含用户的隐私信息或一些商业机密。因此电子邮件在传输过程中对安全性必须有一定的要求。本客户端系统通过TCP/IP协议中传输层的其中一个安全协议SSL/TLS,对每一封电子邮件的传输通道进行加密,即时被黑客截获也难以还原其内容,从而使电子邮件的安全得到了保证。

  3.1.2.3 系统稳定性

  稳定性是一款软件在使用过程中最重要也是最基本的需求,毕竟可靠性得不到保障的话,一款软件也就失去了存在的意义了。因此,该软件提供了一些机制在提高其稳定性。客户端运行过程中如出现卡死现象时,用户可以通过强制结束进行的方终止客户端运行。当网络出现异常(如网络切换或网络中断)时,客户端会主动终止网络连接,并等待网络恢复正常时重新连接,从而避免移动设备因客户端消耗大量CPU、内存资源而导致系统耗电加快和移动设备反应变慢。

  3.1.2.4 系统可移植性

  由于本系统是在Android平台的最顶层应用层进行开发,根据Android系统的层次体系结构,因为没有涉及到对Android平台最底层协议的调用,因此本系统可以移植到任何搭载Android系统的移动设备上。

 1/3    1 2 3  
Copyright © 2008-2020 学术论文网 版权所有 粤ICP备16093775号