iteye_16720 2009-11-30 10:32 采纳率: 100%
浏览 245
已采纳

javamail实现邮件客户端收件箱的问题?

请问大家在做邮件客户端的时候,如何实现这个收件箱功能?就是第一次登录可以从远程服务器上收取邮件保存在本地。下次在本地可以直接查看这些邮件。数据库该怎么建?附件又该如何获取并保留在本地以便下次读取?发件箱也一样。。还有定时发送该如何实现??跪谢了!!!

  • 写回答

1条回答 默认 最新

  • maxabe 2009-11-30 11:45
    关注

    首先声明 本人很菜~~~ :D
    最近刚完成一个邮件系统的项目,针对你的问题,其实你根本没有有必要来设计数据库来存放邮件信息。你也知道是从远程服务器收取(其实是用流的方式将文件写到本地的eml文件中)到本地。在保存到本地之后,你查看一下保存目录应该是很多eml文件,那就是我们的邮件。所有的邮件都是以这种格式存储的。下载到本地以后这样就保存到本地了,在每次查看这封邮件的时候只需解析一下这个文件就OK了(在这里你要用到数据库,是不是要把邮件的内容,入 收件人,发见人,附件的下载链接存到里边呢?)。
    至于附件的获取,在解析的时候就解决啦,我们知道邮件都是由base64编码组成的。并且是有基本分组成,理所当然附件也在这个eml文件中。把它对应的找到并且解析进行编码转换,在以文件流的形式写到附件文件夹。这样就得当并保存在本地了(大体的业务逻辑是这样的,具体的视情况而定~~),发件箱原理一样。

    注意:
    其实针对不同的mail服务器,有些功能是没有必要实现的,当前用到得mail服务器无非就两种支持pop3和IMAP(当然支持imap的一般都支持pop3),对于pop3 和 imap的区别,简单的可以理解为imap是pop3协议的扩展。还是以发件箱为例:在只支持pop3协议的mail Server(例如 头几年用的比较广范的 window2003 里面的pop3服务器),在他里面只有一个收件箱(获取的时候用store.get("INBOx")),别的文件夹就要入发件箱,垃圾箱,草稿箱,都要在客户端自己建了。例如发件箱在你发送完当前这封邮件之后,在用流的形式把这封邮件的内容写到.eml,这样就构成了一个发件箱。想看发件箱的已发送邮件,在解析一下.eml文件就OK啦。而对于支持IMAP协议的Mail Server(用的比较广范的WinMail(一个商业化的mail服务器)),它里面就存在发件箱草稿箱等,这样你就不用自己用流的方式写到本地了,直接down下来就可以了。

    小弟不才,请多多指教.(在上班,不方便多说,如有疑惑Email:max_abe@yahoo.com.cn)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥30 python代码,帮调试,帮帮忙吧
  • ¥15 #MATLAB仿真#车辆换道路径规划