You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过JobDsl脚本配置Jenkins的email-ext插件?

用JobDSL配置Jenkins email-ext插件SMTP密码的正确实现

你的核心思路方向是对的,但代码存在几处细节错误,以下是修正后的完整可运行Groovy脚本:

关键修正说明

  • 类名拼写错误:ExtendedEmailPublished 应为 ExtendedEmailPublisher
  • 需从Jenkins实例中获取插件描述符,避免静态方法调用的上下文问题
  • withCredentials 需明确指定凭证类型并正确传递变量
  • 配置完成后必须保存描述符更改才能生效

完整脚本

import jenkins.model.Jenkins
import hudson.plugins.emailext.ExtendedEmailPublisherDescriptor
import hudson.plugins.emailext.MailAccount

// 获取Jenkins实例与email-ext插件描述符
def jenkins = Jenkins.get()
def emailExtDescriptor = jenkins.getDescriptorByType(ExtendedEmailPublisherDescriptor.class)

// 获取现有邮件账户,无则创建新账户
MailAccount mailAccount = emailExtDescriptor.getMailAccount() ?: new MailAccount()

// 加载SMTP密码凭证并配置
withCredentials([string(credentialsId: '你的SMTP密码凭证ID', variable: 'SMTP_PWD')]) {
    mailAccount.setSmtpPassword(SMTP_PWD)
}

// 保存配置变更
emailExtDescriptor.setMailAccount(mailAccount)
emailExtDescriptor.save()

注意事项

  • 确保Jenkins已安装Credentials Binding插件,否则withCredentials无法使用
  • 替换你的SMTP密码凭证ID为实际在Jenkins中配置的凭证ID
  • 脚本需在拥有全局配置权限的上下文执行(如初始化脚本、Pipeline或JobDSL的systemGroovy步骤)
  • 若需配置其他SMTP参数(服务器地址、端口、发件人等),可补充调用mailAccount.setSmtpHost()、mailAccount.setSmtpPort()等方法

内容的提问来源于stack exchange,提问作者JesperE

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 06:23:24