[Tips] 使用Groovy处理邮件通知


通过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。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值