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

  4.2数据存储模块的设计与实现

  4.2.1关键数据库表设计

  数据库表用于存储相对较复杂的数据,如账户信息、邮件文件夹、邮件信息等。本系统采用的轻型数据库SQLite。根据概要设计数据库表的分析,系统中关键表共有如下几个:

  表4.2 邮件信息表

字段

类型

NULL

注释

message_id

uidl

size

date

time

subject

sender_address

sender_nickname

to_list

reply_to_list

content_type

content_enconding

html_content

text_content

flag_seen

flag_answered

flag_deleted

flag_star

flay_spam

INTEGER

VARCHAR(30)

SMALLINT

DATE

TIME

NTEXT

VARCHAR(30)

NVARCHAR(20)

TEXT

VARCHAR(30)

VARCHAR(30)

VARCHAR(30)

NTEXT

NTEXT

BOOLEAN

BOOLEAN

BOOLEAN

BOOLEAN

BOOLEAN

Y

Y

Y

N

N

Y

Y

Y

Y

Y

Y

Y

Y

Y

N

N

N

N

N

主键 id

POP 邮件唯一识别码

邮件大小

发送日期

发送时间

主题

发件人地址

发件人名称

收件人列表

回复地址列表

邮件类型

编码格式

html内容

text文本内容

已读标记

回复标记

删除标记

星标

垃圾邮件标记

  4.3 附件信息表

字段

类型

NULL

注释

attach_id

message_id

store_data

size

name

mime_type

content_enconding

content_id

content_disposition

INTEGER

VARCHAR(30)

BLOB

SMALLINT

NVARCHAR(20)

VARCHAR(20)

VARCHAR(10)

VARCHAR(30)

VARCHAR(30)

N

N

N

N

N

N

N

N

N

主键 id

所属邮件id

内容数据

附件大小

附件名称

附件类型

编码类型

邮件内容ID

附件属性名

  表4.4 文件夹与邮件存储联系表

字段

类型

NULL

注释

folder_id

message_id

INTEGER

INTEGER

N

N

文件夹ID

邮件ID

  表4.5 文件夹信息表

字段

类型

NULL

注释

folder_id

account_address

folder_name

flag_sync

last_update

INTEGER

VARCHAR(30)

NVARCHAR(20

BOOLEAN

DATETIME

N

Y

N

N

N

文件夹ID

所属账户地址

文件夹名称

同步标记

文件夹最后更新时间

  表4-6邮箱账户信息表

字段

类型

NULL

注释

account_address

account_password

account_type

account_alias

display_name

incoming_server

incoming_port

incoming_auth

outgoing_server

outgoing_port

VARCHAR(30)

VARCHAR(20)

VARCHAR(10)

NVARCHAR(20)

NVARCHAR(20)

VARCHAR(20)

INTEGER

SMALLINT

VARCHAR(20)

INTEGER

N

Y

N

Y

Y

N

N

N

N

N

邮箱地址(主键)

账户密码

账户类型

账户别名(显示在收件方)

账户显示名称(本地显示)

收件服务器地址

收件服务器端口

收件服务器认证方式

发件服务器地址

发件服务器端口

  表4-7 联系人信息表

字段

类型

NULL

注释

contact_id

contact_alias

contact_s

SMALLINT

NVARCHAR(20)

VARCHAR(20)

N

N

N

主键ID

联系人名称

联系人邮箱地址

  4.2.2数据调用实现

  1.文件调用

  文件调用设计到Android系统的权限问题,需要先申请权限,得到用户同意后才能获得文件的调用资格,这是Android平台的文件安全保障机制。通过代码“android.permission.WRITE_EXTERNAL_STORAGE”获得文件调用权限,实现该功能关键代码如图4.8所示:

  图4.8 文件调用关键代码

  2. SharedPreference 调用

  SharedPreference对象不可以存储数据或者修改数据,只能对数据进行读取的操作,因此通过使用免费开源的Editor编辑器来实现,详细步骤如下:

  (1)通过Context类得到SharedPreferences的实例化对象sp;

  (2) 利用sp对象中的edit()方法获取对象editor(Editor实例化对象);

  (3) 利用editor对象来存储键值对key-value数据;

  (4) 通过editor对象中的comniit()方法保存已经取得的数据。

  3. SQLite调用

  SQLite数据是直接集成在Andriod平台的,首先创建SQLite数据库,实现SQLiteOpenHelper的子类MCHelper中的onCreate和onUpgrate方法,通过这两个方法来创建和更新数据库。

  SQLiteDatabase的核心数据库子类MCDb可以实现数据的增、删、改、查等功能。本文采用SQLiteDatabase中提供的方法来操作数据库,数据库的增、删、查、改的方法以及说明如表4.8所示。

  表4.8 数据库增删改查操作字段及说明

  5系统测试及性能分析

  良好的测试工作才能正确的评估系统的质量,本文对系统的功能和性能都做了详细的测试,具体介绍如下。

  5.1系统测试环境

  本文设计的邮件客户端在魅族手机MX3下完成,但考虑到不同Android版本可能会对邮件客户端造成影响,所以还用了不同版本的Android模拟器进行测试。

  表5-1 测试设备型号及版本列表

设备型号

Android版本

Android 模拟器

Android 模拟器

Android 模拟器

魅族 MX3

2.3

4.1

4.3

4.4

  5.2功能模块测试

  5.2.1邮件收发模块

  邮件收发模块具体分为邮件发送子模块和邮件接收子模块。发送一封新邮件的时候需要填写邮件收件人、邮件的主题和邮件内容等,如图5-1所示。新邮件的编辑中还可以添加附件进行发送,如图5-2所示。邮件的的收件箱截图效果如图5-3所示。

  图5-1 发送纯文本邮件 图5-2 发送带附件邮件 图5-3 邮件收件箱

  5.2.2系统登录模块

  图5-4为该客户端的登录界面,这里加入了一个记住密码和自动登录功能的人性化设计,方便了用户使用本系统,经测试该功能简单实用。图5-5为登录系统后该客户端的主界面,界面简洁明了,分为联系人、发送邮件、收件箱、添加账户等几个功能,方便用户执行相应操作。

 

  图5-4 客户端登录界面 图5-5 客户端的主界面 图5-6 收件箱的邮件分类

  5.2.3邮件管理模块

  图5-6为邮件收件箱里面的文件夹分类,具体包括收件箱、未读邮件、已读邮件、星标邮件、已删除邮件、垃圾邮件等分类,方便用户对邮件的分类管理和查找。

  5.2.4联系人管理模块

  图5-7为本软件联系人的列表,图5-8是对联系人列表进行批量操作,图5-9是添加一个联系人的模板。

 

  图5-7 联系人列表 图5-8 多选联系人 图5-9 添加联系人

  6结论与展望

  6.1结论

  在本课题研究中,从项目调研到系统设计,再到系统的实现大概历时4个月左右。本系统是基于Android平台,采用SMTP和POP3邮件协议,结合Java语言来开发的邮件客户端系统,核心功能邮件的收发是采用JavaMail技术来实现的。

  系统选择基于Android平台客户端原因有两点:一是安卓市场的用户量庞大;二是选择客户端可以弥补B/S架构邮件系统存在的不足,如用户名和密码频繁输入等。

  系统在开发期间碰到了非常多的问题,如Android开发环境配置问题、系统I/O问题、收件箱无法正常显示问题、用户名和密码无法保存问题等,在指导老师和同学的帮助下,并通过查阅大量文献、学习资料和相关技术文档,问题都逐一解决了。

  系统一共分为系统登录、邮件收发、邮件管理、联系人管理四大模块。系统的核心功能已经基本实现,测试可以正常登录收发邮件。系统界面设计简洁美观,用户使用起来操作简单、方便易用。

  6.2展望

  虽然初步完成的邮件收发系统的设计与开发,但是我发现本软件仍然有很多提高的空间,有很多想法可以加入进去,但由于目前技术的局限性,得有待后期的持续开发。本文并未涉及邮件内容的加密模块,和垃圾邮件的过滤模块,这对于一款邮件客户端来说是很重要的用户需求,因此后期将会着重研究这两块的技术要点难点,尽力去完善好一款邮件客户端软件。

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