Jenkins email-ext插件 - 使用scriptler设置msg发件人电子邮件地址

时间:2013-10-21 11:25:47

标签: jenkins email-ext

我在$ JENKINS_HOME / email-templates下有一个groovy脚本,名为sender_email_address.groovy,其代码如下

<%
StringBuilder builderEmail = new StringBuilder()
builderEmail.append("${build.buildVariables.get('BUILD_USER')}")
builderEmail.append("@collective.com")
def sender_email = builderEmail.toString()
%>
${sender_email}

我正在尝试从email-ext插件的预发送脚本设置电子邮件发件人地址。这是代码:

import javax.mail.Message.RecipientType
import javax.mail.Address
import javax.mail.internet.InternetAddress
import javax.mail.internet.MimeMessage

def senderAddress = ${SCRIPT, script="sender_email_address.groovy"}
listener.logger("Sender address = " + senderAddress)
msg.setFrom(new InternetAddress(senderAddress))

我收到以下错误:

def senderAddress = Error in script or template: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
Script1.groovy: 1: unexpected token: < @ line 1, column 1.
<%
^

我正在尝试将发送的电子邮件的发件人地址设置为登录的用户。我可以访问$ {BUILD_USER}值。但如果我直接在预发送脚本中使用它,如下所示

msg.setFrom(new InternetAddress("${BUILD_USER}")

该脚本直接用脚本本身中的电子邮件地址替换$ {BUILD_USER}标记。这违背了对其进行标记的目的,因为下次我与其他用户登录时,该令牌无法替换。有没有办法在其他地方实现它只需保留令牌$ {BUILD_USER}?

1 个答案:

答案 0 :(得分:0)

如果您使用带有“script”参数的$ {SCRIPT}标记,则不需要&lt; %%&gt;就像你做模板一样。所以,你的代码应该是这样的:

StringBuilder builderEmail = new StringBuilder()
builderEmail.append("${build.buildVariables.get('BUILD_USER')}")
builderEmail.append("@collective.com")
builderEmail.toString()