走自己的路

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

            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 叱咤紅人 閱讀(2012) 評論(0)  編輯  收藏 所屬分類: Design and Analysis Pattern 、Other Java and J2EE frameworks
          主站蜘蛛池模板: 滕州市| 温州市| 商水县| 迁安市| 赣州市| 吴川市| 开阳县| 巴南区| 枣阳市| 黄浦区| 商丘市| 肥西县| 宕昌县| 毕节市| 和顺县| 阆中市| 西青区| 莱芜市| 且末县| 山西省| 镇巴县| 顺义区| 峡江县| 罗江县| 庆城县| 饶阳县| 襄垣县| 孙吴县| 湖州市| 通化市| 三河市| 临猗县| 临泽县| 永州市| 逊克县| 根河市| 江达县| 衡山县| 朔州市| 客服| 华容县|