Read Sean

          Read me, read Sean.
          posts - 508, comments - 655, trackbacks - 9, articles - 4

          [Tips] 使用Groovy處理郵件通知

          Posted on 2008-08-27 18:55 laogao 閱讀(753) 評論(0)  編輯  收藏 所屬分類: On JavaProgramming in GeneralOther Languages

          通過Groovy實現郵件通知(其實是轉發到ANT)十分容易,先上代碼:

          ?1?ant?=?new?AntBuilder()
          ?2?
          ?3?def?mail(subject,?body,?attachment?=?[dir:".",files:[]])?{
          ?4?????ant.mail(mailhost:"mail.com",?mailport:"1025",?user:"mailer",?password:"123",?subject:"${subject}")?{
          ?5?????????from(address:"nobody@mail.com")
          ?6?????????to(address:"nobody@mail.com")
          ?7?????????message("${body}")
          ?8?????????attachments()?{
          ?9?????????????if?(attachment.files)?{
          10?????????????????fileset(dir:"${attachment.dir}")?{
          11?????????????????????attachment.files.each?{
          12?????????????????????????include(name:it)
          13?????????????????????}
          14?????????????????}
          15?????????????}
          16?????????}
          17?????}
          18?}
          19?
          20?attachment?=?[dir:"/tmp",?files:["some.properties","some.sql"]]
          21?mail("Test?mail?message?at?${new?Date()}",?"This?is?a?test?message.",?attachment)
          22?

          這個簡單的例子很好的展示了如下Groovy特性:
          1- Groovy腳本可以不需要定義任何class,方法定義和實際調用也可以混在一起,十分順手。
          2- 定義變量不需要指定類型,只要賦值即可,不過運行期依然是強類型。
          3- 方法參數可以有默認值。
          4- List和Map的構建直接在語義層面提供支持,如[a:1,b:2]和[1,2]。
          5- GString使得我們可以方便的在String中引用變量甚至是表達式,如"${a.b.c}"或"${new Date()}"。
          6- 邏輯判斷在true/false基礎上有所擴展,[](0個元素的List)和null均做false處理。
          7- Closure支持,方便我們在外圍代碼處“當場”指定處理邏輯,省去了大多數在Java中需要匿名內部類來處理的麻煩,如attachment.files.each { .... },只有一個傳入參數時,可直接用it指代。
          8- 與ANT的無縫集成,以及對Builder模式的良好支持,使得我們可以寫出上述初看上去有些不可思議的代碼。

          P.S. 雖然Groovy自己已經bundle了ANT,可以直接使用其中的絕大多數功能,不過為了調用ANT的mail task,還需要將ANT發行版中帶有的ant-javamail.jar以及JavaMail API對應的jar包(可以從Sun網站下載)加到classpath。如果你的JDK版本低于6.0,還需要activation.jar。


          主站蜘蛛池模板: 武功县| 壤塘县| 上林县| 双辽市| 米泉市| 庄浪县| 沛县| 德昌县| 军事| 张家川| 南宁市| 黔东| 海晏县| 密云县| 沙田区| 扬中市| 洮南市| 启东市| 大厂| 凤冈县| 新郑市| 北京市| 永州市| 潞城市| 息烽县| 姜堰市| 和平县| 平遥县| 平乐县| 哈密市| 龙南县| 马尔康县| 双城市| 嘉祥县| 鄂温| 承德县| 湖州市| 黑河市| 兰西县| 新沂市| 利辛县|