使用 Groovy Postbuild 操作从 Jenkins 作业发送电子邮件

Send email from Jenkins job using Groovy Postbuild action

有没有办法使用 Groovy Postbuild action 从 Jenkins 作业发送电子邮件?类似于使用 Jenkins 管道插件

完成的方式
 mail to: 'devops@acme.com',
     subject: "Job '${env.JOB_NAME}' (${env.BUILD_NUMBER}) is waiting for input",
     body: "Please go to ${env.BUILD_URL}."

是的,你可以。

  1. 前往 jenkins -> configuration 为您的 jenkins 设置 SMTP 配置。如果您有自己的(公司)SMTP 服务器,那会很棒,否则您可以使用 google 的 smtp 服务器和您的 gmail 帐户(您可以为 jenkins 创建新的 gmail 帐户)。

  2. 添加 post 构建操作(通过电子邮件发送可编辑通知)并相应地填写表格。

注意: 因为我们将我们的 gmail 帐户的用户名和密码放在 jenkins 上,gmail 会通知您您的帐户正在被一个应用程序使用并且安全性较低;在这种情况下,您必须按照说明 here 告诉 gmail 允许不太安全的访问。 如果您没有启用安全性较低的应用程序来访问您的应用程序,您的电子邮件可能无法正确传送。

感谢 我发现我可以直接使用 JavaMail API。它帮助了我。

import javax.mail.*
import javax.mail.internet.*


def sendMail(host, sender, receivers, subject, text) {
    Properties props = System.getProperties()
    props.put("mail.smtp.host", host)
    Session session = Session.getDefaultInstance(props, null)

    MimeMessage message = new MimeMessage(session)
    message.setFrom(new InternetAddress(sender))
    receivers.split(',').each {
        message.addRecipient(Message.RecipientType.TO, new InternetAddress(it))
    }
    message.setSubject(subject)
    message.setText(text)

    println 'Sending mail to ' + receivers + '.'
    Transport.send(message)
    println 'Mail sent.'
}
Usage Example:

sendMail('mailhost', messageSender, messageReceivers, messageSubject, messageAllText)