Grails邮件插件设置CC参数

时间:2015-10-29 11:16:43

标签: grails

我正在使用邮件插件,并希望在运行时设置cc参数。

  // build CC list at runtime
  def arr = []

  arr.add("addr1@test.com")
  arr.add("addr2@test.com")

  try {
    mailService.sendMail {
       to params.toAddress
       from "myname <me@home.com>"
       subject subjectLine
       cc arr
       body params.emailContent
    }    
  } catch(all) {
    log.error all
  } 

如果cc为空,则会引发异常:cc cannot be null or empty

如何设置cc参数或在我不需要时将其删除?

2 个答案:

答案 0 :(得分:3)

你走了:

try {
    mailService.sendMail {
        to params.toAddress
        from "myname <me@home.com>"
        subject subjectLine
        if (arr) {    // Check if there is any value in the cc list
            cc arr
        }
        body params.emailContent
    }
} catch(all) {
    log.error all
}

Closures就像一个常规方法,你可以在其中使用任何表达式,赋值。因此,只需使用Groovy的真值来测试List中是否存在任何值。

另外,我认为您必须先将toArray调用arr,然后再将其传递给cc()方法:

cc(arr.toArray())

因为,这就是文档所说的:

  

使用List存储收件人时存在一个缺陷。   在将其提供给构建器时,您必须调用toArray。

答案 1 :(得分:0)

如果您不需要cc,最好​​不要在sendMail闭包中定义cc,那么请尝试这种方式

try {
 mailService.sendMail {
   to params.toAddress
   from "myname <me@home.com>"
   subject subjectLine
   body params.emailContent
 } 
}

并定义cc试试这个

 cc(["fred@g2one.com", "ginger@g2one.com"])

这样,您也可以在cc

中定义列表
 cc(arr)

希望这会有所帮助。感谢