走自己的路

路漫漫其修远兮,吾将上下而求索

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  50 随笔 :: 4 文章 :: 118 评论 :: 0 Trackbacks
   

封装Javamail的原因

两个字需求

1.      去年已经写过一个Message channel,抽象出了消息发送的统一接口,已经支持FTP, JMS。底层还提出来了一套统一的connection pool结构。用户通过依赖注入方式配置选择通信方式,connection pool的策略,具体实现在代码中对用户都是透明的,用户可以方便地通过配置文件切换选择的通信方式。Email通信方式也需要加到这套已有的设计上。

2.      直接使用javaMail,用户需要自己处理整个email的复杂结构,比如在接收时还需要处理正文和附件,并存储,使用完后还需要清理。

3.      用户可以提供邮件模板,从业务程序的上下文环境中提取有用的信息,替换模板中的placeholder,形成邮件内容。

4.      自动ACK,每收到一份邮件,就自动发送应答,应答也提供了模板定制功能,可以引用原邮件的标题,附件,正文等。

5.      邮件匹配和过滤,javamail提供了search功能,可以对邮件进行过滤,但是它不满足1中系统中已有的接口。

6.      对于匹配和过滤邮件,javamail已经设计了套语言的面向对象模型(SearchTerm, AndTerm, OrTerm, NotTerm…)。但是在实际应用中,我们不可能让用户直接使用这套面向对象机制,特别是前台用户,前台用户应该只需要提供一个表达式,描绘出接收的邮件必须满足的格式,然后后台把用户的表达式解释成javamail的面向对象模型。这就需要我们设计DSL和解释器。

7.      默认情况下用JavaMail收发中文邮件会出现乱码

8.      可对email socket connection 进行pool,提高性能

9.      在发送和接收时,Email Message需要序列化下来,并可反序列化。在发送时,偶尔也会衰地遇到SMTP服务器down掉的情况,这时email message需要能够备份下来,并能自动retry重发。


上文: 在JavaMail的基础上构建自己的Email Channel(1):基础知识



posted on 2010-02-04 07:25 叱咤红人 阅读(2001) 评论(0)  编辑  收藏 所属分类: Design and Analysis Pattern Other Java and J2EE frameworks

只有注册用户登录后才能发表评论。


网站导航: