走自己的路

          路漫漫其修遠兮,吾將上下而求索

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            50 隨筆 :: 4 文章 :: 118 評論 :: 0 Trackbacks
             

          封裝Javamail的原因

          兩個字需求

          1.      去年已經(jīng)寫過一個Message channel,抽象出了消息發(fā)送的統(tǒng)一接口,已經(jīng)支持FTP, JMS。底層還提出來了一套統(tǒng)一的connection pool結(jié)構(gòu)。用戶通過依賴注入方式配置選擇通信方式,connection pool的策略,具體實現(xiàn)在代碼中對用戶都是透明的,用戶可以方便地通過配置文件切換選擇的通信方式。Email通信方式也需要加到這套已有的設計上。

          2.      直接使用javaMail,用戶需要自己處理整個email的復雜結(jié)構(gòu),比如在接收時還需要處理正文和附件,并存儲,使用完后還需要清理。

          3.      用戶可以提供郵件模板,從業(yè)務程序的上下文環(huán)境中提取有用的信息,替換模板中的placeholder,形成郵件內(nèi)容。

          4.      自動ACK,每收到一份郵件,就自動發(fā)送應答,應答也提供了模板定制功能,可以引用原郵件的標題,附件,正文等。

          5.      郵件匹配和過濾,javamail提供了search功能,可以對郵件進行過濾,但是它不滿足1中系統(tǒng)中已有的接口。

          6.      對于匹配和過濾郵件,javamail已經(jīng)設計了套語言的面向?qū)ο竽P?/span>(SearchTerm, AndTerm, OrTerm, NotTerm…)。但是在實際應用中,我們不可能讓用戶直接使用這套面向?qū)ο髾C制,特別是前臺用戶,前臺用戶應該只需要提供一個表達式,描繪出接收的郵件必須滿足的格式,然后后臺把用戶的表達式解釋成javamail的面向?qū)ο竽P汀_@就需要我們設計DSL和解釋器。

          7.      默認情況下用JavaMail收發(fā)中文郵件會出現(xiàn)亂碼

          8.      可對email socket connection 進行pool,提高性能

          9.      在發(fā)送和接收時,Email Message需要序列化下來,并可反序列化。在發(fā)送時,偶爾也會衰地遇到SMTP服務器down掉的情況,這時email message需要能夠備份下來,并能自動retry重發(fā)。


          上文: 在JavaMail的基礎上構(gòu)建自己的Email Channel(1):基礎知識



          posted on 2010-02-04 07:25 叱咤紅人 閱讀(2018) 評論(0)  編輯  收藏 所屬分類: Design and Analysis Pattern 、Other Java and J2EE frameworks
          主站蜘蛛池模板: 嘉定区| 乌审旗| 永和县| 东乌| 丰原市| 鲜城| 巴青县| 天柱县| 鄂伦春自治旗| 平顶山市| 漳浦县| 台前县| 阜宁县| 张家川| 南宫市| 凤山县| 和林格尔县| 青川县| 朔州市| 镇江市| 休宁县| 江山市| 葫芦岛市| 宜黄县| 东乡县| 临湘市| 夏邑县| 常熟市| 孙吴县| 大渡口区| 宁安市| 建昌县| 丰都县| 镇康县| 兴义市| 安义县| 临武县| 密云县| 衡山县| 贡觉县| 泽库县|