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)

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

报告相同问题?

悬赏问题

  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码