我正在使用邮件插件,并希望在运行时设置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
参数或在我不需要时将其删除?
答案 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)
希望这会有所帮助。感谢