增加订阅邮件设计方案

参考了大兴的意见

http://www.learndiary.com/disDiaryContentAction.do?goalID=33

http://www.learndiary.com/disDiaryContentAction.do?goalID=67

增加订阅邮件的功能分析设计如下:

(1)把订阅的链接放在“显示目标内容” 这个页面上,功能为设计两个:"订阅目标" "退订目标"

(2)保存订阅信息: 在数据库中单独建一个表(名为usermailgoal)保存“用户ID---目标ID”的订阅关系,涉及到的属性还有订阅的时间,如果用户退订了,则在数据库中删除这条记录;

(3)用户提交日记:用户提交日记后,一方面把日记存入数据库,另一方面则向订阅了对应目标的用户发出电子邮件;过程应该是这样的: 以目标ID为关键搜索usermailgoal表,搜索到用户ID,再根据用户ID得到对应的邮件地址,生成发送邮件地址列表,这样就可以把邮件 发出去了;然后,把发送情况告知写日记的用户,再按原来的流程回到日记列表页面;

第(3)个是大兴的意见,我个人的设计是这样的: 用户提交日记后,把日记存入数据库后就回到日记列表页面,发出电子邮件则由后台线程来处理,而不是等到邮件发出去了才回到日记列表页面,因为如果要发送很多,例如十几到几十封邮件(即使是只有几封)都是很费时的,这样用户会觉得系统得很慢,另外发送邮件过程对于用户来讲透明为好,如果想知道给哪些人发了邮件,则可通过"检索"看哪些用户订阅了这个目标.发送情况如有错误则写入错误日志文件.  

请大家多提意见.

Author: raorao

爱CODE

3 thoughts on “增加订阅邮件设计方案”

  1.    一直没有机会看看邮件服务怎么作!请问邮件服务用什么做,能不能把您做的这一块,在作的时候,留下日记,让我们好有个学习的机会! 

       对发送邮件我赞成放在后台,其实很多邮件服务并不是及时发送的,如果不是很比须得花,完全应该放在服务器服务空闲时,一般在午夜,凌晨自动启动服务发送。

  2.     我还不知道邮件服务器有linzc说的那种延迟发送的情况呢。 

        在java里,有一个javamail的东西可以方便的制作邮件系统,不只是发送。支持javamail需要两个包:mail.jar和activation.jar,可以在sun的网站下载。

        非常赞同raorao发送邮件运用多线程处理的思路。我还没有尝试过多线程呢。作为性能的对比,也可以两种方式都试一下,可以以开发小组的邮件列表来试,我想大家会理解的。把试验的结果也可以写个简单的报告出来,供大家参考学习。

        但是,我觉得让用户去检索订阅目标的设计有待进一步考虑。软件设计应以人为本,我个人觉得这样设计

    用户有点不方便。可以在日记存入数据库后即给用户显示发送给了哪些用户。我想,发送失败的可能较小。我

    们可以给用户的发送提示上写“订阅这个目标的用户有***”,个别的发送不成功应该不算欺骗用户。但是,能

    够想办法把哪封邮件发送失败的消息反馈给用户最好。这种方式与用户检索订阅用户的效果是一样的。我的设

    计是参照www.delphibbs.com发送邮件的设计,您可以参考一下。

        赞成linzc说的,可否请您把解决问题的过程留下日记,供大家分享?如同linzc本人的做法。

  3. 日记存入数据库后即给用户显示发送给了哪些用户:给用户的发送提示上写“订阅这个目标的用户有***”

    今晚开始写代码

Comments are closed.