如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
PIMail构思一、原始需求1.必须可以收发邮件,支持多邮件帐户设置,支持POP3和SMTP协议。2.必须支持中文,一个邮件多附件。3.必须是Eclipse的RCP应用,能集成到mywork中,并使用mywork中的联系人。4.支持邮件正文另存为html文件。5.支持简单的防垃圾邮件,可通过定义白名单、黑名单来匹配。6.支持邮件查询,可按header或正文查询,查询速度万封邮件在1秒之内。7.支持本地存储,支持大批量邮件。8.支持类似于vista的“堆栈方式”显示。9.支持签名。10.支持写邮件时存草稿。二、界面样式主界面:采用outlook中的样式,进行简化,分为左右两列,左列为邮件列表,右边为邮件正文。邮箱放在工具栏上作为下拉框出现,分为“收件箱、发件箱、草稿箱、垃圾箱、归档箱”。列表为单行模式:列表为多行模式:当放大至全屏时,单行模式也能有较好的效果,为了实现简单,采用单行模式。写邮件,vista中的windowsmail界面:二、设计策略:1.采用Eclipse3.2开发;采用poppers作为pop3来收取邮件;采用UIForm来实现写邮件功能的界面,采用commonsmail组件来实现发送邮件。2.采用treetable来显示邮件列表,以便于未来“堆栈方式”分组扩展。显示列为“重要性、是否含附件、发件人、主题、发送时间”3.采用webbrowser组件(内嵌html浏览器)来展示邮件,以便于兼容txt和html格式。4.采用mywork中的存储体系,考虑到安全和简单,底层不采用文件存储,而采用数据库存储,选择H2作为数据库,改造poppers实现一个以H2为存储体系符合javamail规范的pop3provider。5.UI层展示邮件时使用JDBC来访问数据???JDBC在javamail层之下,还是提供双层?三、实现计划1.实现一个读取邮件文件SWTAPP2.实现一个发邮件的SWTAPP3.实现收发邮件的RCP4.与mywork的整合独立的邮件显示程序一、基础做一个明码邮件读取文件,实质上一个Mimetype文件的显示程序,第一件要干的事情就是学习,一是学习mimetype的相关资料,网上已经有一些中文的资料了,二是学习javamail规范。mimetype的主要原理就是将二进制文件编码为文本文件,然后嵌套地存放在一个文件中。其嵌套关系为:通过上图,可以简单判定:如果邮件格式为multipart/mixed,则是含有附件的邮件;如果格式为multipart/related,则邮件中含有内嵌的图片等;如果格式为multipart/alternative,则邮件既包含html,又包含同等内容的文本;当然,只有纯文本正的邮件,其格式一般为text/plain;只有html时,其格式一般为text/html。RFC规范枯燥难懂,大家可以用“MIME邮件面面观”为关键词google出一篇好文学习。另外,大家将网页另存为mht文件时,就得到了一个简化的标准的mimetype文件,这样也可以进一步的学习。javamail还没有见到很好的中文材料,最好去sun的官方网站下载相关规范学习一下。二、正文显示邮件读取程序,最直观的想法,就是去拆解上述的mimetype文件,从中剥离出txt或html内容进行显示,并在显示html内容时处理好其中的内嵌资源,这并不是一个轻松的工作。好在,通过对mimetype的格式的学习,同时了解到与mht格式的关系后,一个想法自然就出现,就是利用IE来显示邮件正文,这样,就能绕过复杂的解析过程。经过实验,SWT中的Browser控件也支持mht格式,这样,只要简单地把整个邮件全扔给browser控件就行了。在browser显示之后,点击鼠标右键后,就出现了IE的右键菜单,当然非常不爽,有几种思路来屏蔽browser中的鼠标右键:1.最简单的当然是在html中就带有屏蔽右键的javascript2.另一种是在显示完html后,用browser.execute方法执行一段屏蔽右键的javascript脚本字符串,以下是一个示例:"functionnocontextmenu(){event.cancelBubble=true;event.returnValue=false;returnfalse;};document.oncontextmenu=nocontextmenu;"3.想办法禁止browser中的右键菜单,可以用一个空菜单来“欺骗”一下Menumenu=newMenu(body.getShell(),SWT.POP_UP);browser.setMen