自己做了一个基于JavaSwing的IM聊天软件,后来想着实现邮件问题,整个项目类似于Tencnt 的, 由于自己对Java的偏爱和开源的崇拜ing,服务器自然选择了开源的James,总体感觉很好用。。。。。。
开发工具Eclipse+Mysql+James:
网上能找到最多的是James的配置,深入的文章很少,在这里我只说两点,一 你要是内网IP只能向外网发送邮件,不能受到邮件(计算机网络的基础知识),二 要是想和外网实现通信,必须设置DNS或者你有唯一的外网IP。
配置上解决了,下面就是二次开发,我选择的是Mysql数据库,根据配置会生成一个mail数据库,下面有三个表 users,spool,inbaox
users就是用户表,spool是信息记录和状态综合表,inbox是邮件格式信息表。
好了,下面就是设计自己的邮箱数据库了。我这里提供两种思路供大家思考,一 不要动系统三个表,建立新的关联表进行处理用户数据,二是再建立一个关联的数据库和系统表进行关联,这里我采用第
二种方法,至于原因稍后给出,看一下我的数据库架构。contactinfo是联系人的表,emailinfos是邮件信息的表,userinfo是用户表 这个表和users是想关联的,userid是相同的,我用触发器实现了两个表信息的同步。下面分析使用和我选择第二种方式的原因
每次来自桌面客户端注册向useinfo写入用户信息,同时触发器完成向James users里写入注册信息,这样在网页注册时可以单独向James里的users里注册,实现了两个信息库的共存和结合。第二 在邮件收发操作时,先由web里的Servlet从James Server里读取邮件放在qq数据库中,然后在由用户操作qq数据库完成邮件读取,编辑,删除,更改!
看到这里或许你已将明白了我选择第二种方式的原因:
eg:删除(次级数据库)和彻底删除(邮件系统本数据库),而邮件系统本数据有DBA定期维护。
一个实用稳定安全扩充性强的系统必须做好数据库和前台综合架构的考录,自己完成了整个过程的工作,感觉收获很大