LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

webmail开发小记

admin
2010年8月4日 19:4 本文热度 4905
  八月底开始着手做webmail的时候想从网上搜些信息参考,能找到的基本都是介绍javamail的api,几乎找不到什么开发webmail思路的资料。目前我们的项目已经到了收尾阶段,也比较闲,我想总结一下我的思路,与同学们共同学习。

  我们邮件服务器用的是开源的james,由于当前版本不支持imap所以只能用pop3协议。使用pop3协议在开发上会带来很多麻烦,比如pop3服务器只有inbox文件夹、不能为邮件加标签等,这些问题我是这样考虑的,先从服务器上收邮件,把邮件主要的头信息和相关信息存数据库,如:邮箱地址、标题、大小、是否已读、发件人等等;邮件存本地硬盘,只有读某封邮件的时候再从硬盘上读(类似上传附件的思路),当然也可以存数据库,不过如果邮件很大这张表就太恐怖了。

  这样做每次收邮件都会从服务器上删除已收到的,没有解决的问题是如何不从服务器上删除而又不会每次收都收到重复的,百思不得其解,时间关系也没有再仔细研究。

  webmail部分的邮件过滤其实很简单,因为规则是用户订的,可以允许客户匹配标题、发件人、内容等等。接收邮件的同时匹配一下,如果符合过滤规则把记录的状态改成垃圾邮件箱或拒收就是了。阻止发件人的功能也是这么做的,其实邮件服务器上还是收到了这封邮件,只不过没有收到webmail里。

  别的好像也没有什么好说的,不是说开发过程中没有遇到什么问题,相反,我们不断碰到问题解决问题,不过没有多少太深刻的,很多朋友可能对解析邮件比较头大,我说一下我的思路,也欢迎大家一起讨论

  邮件的结构如下图所示,如果能吃透这张图,解析起来就明朗多了。我们要做的是判断part是什么类型
 
java代码
  1. if (!part.ismimetype("text/rfc822-headers") && part.ismimetype("text/*")){   
  2. //说明这部分是邮件内容   
  3. //注意内容分为text/plain和text/html两种 显示的时候要区别   
  4. }else if (p.ismimetype("multipart/*")) {   
  5. //遍历multipart中的part 逐一递归本方法   
  6. }else if (p.ismimetype("message/rfc822")) {   
  7. //递归调用本方法   
  8. }else {   
  9. //这时很有可能说明改part是附件 按附件处理   
  10. }  

这里每步解析都可能会抛异常,那也没办法,不与理睬,不过一封正常的邮件应该没什么问题

该文章在 2010/8/4 19:04:08 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved