最近在做新系统,又遇到了发送邮件的问题,我们这个系统有一定的特殊性,可能需要发送邮件的地方比较多。于是想着怎么做的灵活一点,更能响应以后的需求变化,于是有了现在的这个实现。
总的来说,使用了spring的aop的触发机制,在不同的点来触发发送邮件这个业务,并根据这个点发送相应的邮件。而发送邮件这个模块也使用了spring包装过的javamail,不同的邮件则使用了velocity模板。呵呵,也算是现时比较流行的一个实现了!
下面是邮件子系统的简单结构图:
Email:
是一个邮件对象,就像我们平常看到的邮件一样,它包含了要发送的内容和一些属性,如:发送地址,邮件主题,发送 方,回复地址。
MailEngine:
邮件发送引擎。主要负责把我们生成的Email发送出去。它里面有一个JavaMailSender的实例,由spring提供。
VelocityEmailFactory:
邮件工厂,实现了EmailFactory接口。它将根据提供的velocity邮件模板和数据信息,生成一个待发送的Email实例。
MailBaseService:
抽象类,邮件服务的基础类,所有的邮件服务都将继承自它。它有一个VelocityEmailFactory实例,用于生成待发送的Email,还有一个MailEngine实例,用于发送Email。
MailByUserRegister
:具体的邮件服务,继承自MailBaseService。它将在用户注册时,为用户填写的邮件地址发送一封邮件。它有一个对应的velocity格式的邮件模板,和一些初始化参数,如该类邮件的主题,该类邮件的回复地址等。它的任务就是在用户进行注册操作并且成功时被触发(运用了aop机制),然后根据模板和用户注册时填写的一些信息,由父类提供的VelocityEmailFactory生成一封邮件,然后由父类的MailEngine发送出去.
MailByOrder:
系统中另一个具体的邮件服务,在有预定产生时,为预定者发送一封邮件.
这个就是邮件系统的结构设计,接下来会把相应的具体实现写下来,唉,最近太忙了,只能尽力了!
本文地址:http://kino.iteye.com/blog/210349
, 转载请注明,谢谢!
分享到:
相关推荐
第二章 概念结构设计 2.1 系统的主要功能模块 注册功能模块本模块中有一系列以用户名为关键字的表的创建, 包括电子邮件地址的创建, 收件箱、草稿箱的创建。用户信息记录将被插入用户信息表。用户注册后将取得使用系...
4.6 系统管理员模块的设计 4.7普通员工模块的设计 4.8 公共模块的设计 4.9 公共类设计 第5章 系统实现 5.1 系统安全控制实现 5.2 INTERNET信息服务器(IIS)的架设 5.3 系统的三层C/S实现 第6章 系统测试 ...
252.1 理解Access的应用设计方法 252.2 从模板文件创建Access应用 262.3 熟悉联系管理应用 292.3.1 数据库窗口中的表对象 292.3.2 切换面板窗体 322.3.3 Access窗体 332.3.4 Access报表 352.3.5 Access模块 362.4 ...
该系统是基于B/S模式,开发语言ASP与SQL数据库进行开发的小区物业管理系统,力求与实际相结合具有小区日常管理和统计等功能,旨在达到使小区的管理和人事数字化使之更加方便快捷以提高工作效率。 1. 管理员后台管理...
252.1 理解Access的应用设计方法 252.2 从模板文件创建Access应用 262.3 熟悉联系管理应用 292.3.1 数据库窗口中的表对象 292.3.2 切换面板窗体 322.3.3 Access窗体 332.3.4 Access报表 352.3.5 Access模块 362.4 ...
252.1 理解Access的应用设计方法 252.2 从模板文件创建Access应用 262.3 熟悉联系管理应用 292.3.1 数据库窗口中的表对象 292.3.2 切换面板窗体 322.3.3 Access窗体 332.3.4 Access报表 352.3.5 Access模块 362.4 ...
252.1 理解Access的应用设计方法 252.2 从模板文件创建Access应用 262.3 熟悉联系管理应用 292.3.1 数据库窗口中的表对象 292.3.2 切换面板窗体 322.3.3 Access窗体 332.3.4 Access报表 352.3.5 Access模块 362.4 ...
252.1 理解Access的应用设计方法 252.2 从模板文件创建Access应用 262.3 熟悉联系管理应用 292.3.1 数据库窗口中的表对象 292.3.2 切换面板窗体 322.3.3 Access窗体 332.3.4 Access报表 352.3.5 Access模块 362.4 ...
252.1 理解Access的应用设计方法 252.2 从模板文件创建Access应用 262.3 熟悉联系管理应用 292.3.1 数据库窗口中的表对象 292.3.2 切换面板窗体 322.3.3 Access窗体 332.3.4 Access报表 352.3.5 Access模块 362.4 ...
252.1 理解Access的应用设计方法 252.2 从模板文件创建Access应用 262.3 熟悉联系管理应用 292.3.1 数据库窗口中的表对象 292.3.2 切换面板窗体 322.3.3 Access窗体 332.3.4 Access报表 352.3.5 Access模块 362.4 ...
252.1 理解Access的应用设计方法 252.2 从模板文件创建Access应用 262.3 熟悉联系管理应用 292.3.1 数据库窗口中的表对象 292.3.2 切换面板窗体 322.3.3 Access窗体 332.3.4 Access报表 352.3.5 Access模块 362.4 ...
252.1 理解Access的应用设计方法 252.2 从模板文件创建Access应用 262.3 熟悉联系管理应用 292.3.1 数据库窗口中的表对象 292.3.2 切换面板窗体 322.3.3 Access窗体 332.3.4 Access报表 352.3.5 Access模块 362.4 ...
252.1 理解Access的应用设计方法 252.2 从模板文件创建Access应用 262.3 熟悉联系管理应用 292.3.1 数据库窗口中的表对象 292.3.2 切换面板窗体 322.3.3 Access窗体 332.3.4 Access报表 352.3.5 Access模块 362.4 ...
252.1 理解Access的应用设计方法 252.2 从模板文件创建Access应用 262.3 熟悉联系管理应用 292.3.1 数据库窗口中的表对象 292.3.2 切换面板窗体 322.3.3 Access窗体 332.3.4 Access报表 352.3.5 Access模块 362.4 ...
252.1 理解Access的应用设计方法 252.2 从模板文件创建Access应用 262.3 熟悉联系管理应用 292.3.1 数据库窗口中的表对象 292.3.2 切换面板窗体 322.3.3 Access窗体 332.3.4 Access报表 352.3.5 Access模块 362.4 ...
252.1 理解Access的应用设计方法 252.2 从模板文件创建Access应用 262.3 熟悉联系管理应用 292.3.1 数据库窗口中的表对象 292.3.2 切换面板窗体 322.3.3 Access窗体 332.3.4 Access报表 352.3.5 Access模块 362.4 ...
详细设计 7 4.1窗体界面控件设计 7 4.2 程序实现 8 5、系统的实现与测试 15 5.1 发送电子邮件程序主界面(带附件) 15 5.2接收界面(带附件) 15 6、结束语 17 参考文献 18 电子邮件发送程序的设计与实现 摘 要 电子...
图1-2 电话薄模块用例图 图1- 3为个人中心模块中设置个人详细信息子模块的用例。该模块的功能就是用户设置自己的 个人基本信息。 图1-3 设置个人信息模块用例图 图1-4显示了联系人还原与备份的用例图。该模块的功能...
该系统是基于B/S模式,开发语言ASP与SQL数据库进行开发的小区物业管理系统,力求与实际相...根据系统模块的设计,逻辑结构可以分为三个层次:一是管理员管理,包括住户资料管理,新闻管理,费用管理,出租房屋管理,
VB校园网管理 单片机-基于GSM模块的车载防盗系统设计 TC35i 资料 宾馆管理信息系统论文.doc 单片机-基于GSM短信模块的家庭防盗报警系统 VB+ACCESS基于CAN总线的灌溉控制系统设计 单片机-火灾自动报警系统设计 VB+...