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

如何为Jenkins定期构建配置邮件通知?解决收件人缺失异常

Jenkins定时构建邮件无收件人问题的解决方案

针对定时构建时BUILD_USER_EMAIL为空导致的邮件发送失败,推荐以下几种最优解决方式:

1. 为收件人设置默认值(最简单通用)

利用Groovy的Elvis运算符?:,在BUILD_USER_EMAIL为空时自动使用预设的默认邮箱。配置示例:

to: "${BUILD_USER_EMAIL ?: 'your-default-email@example.com'}"

这种方式无需区分构建触发方式,只要触发用户邮箱不存在,就会 fallback 到默认收件人,适合大多数场景。

2. 根据构建触发方式区分收件人

如果需要给手动构建和定时构建设置不同的收件群体,可以通过判断构建原因来动态分配收件人。在流水线中可以这样写:

def getEmailRecipient() {
    def causes = currentBuild.buildCauses
    // 判断是否为定时触发
    def isTimerTrigger = causes.any { it._class == 'hudson.triggers.TimerTrigger$TimerTriggerCause' }
    return isTimerTrigger ? 'maintenance-team@example.com' : BUILD_USER_EMAIL
}

// 邮件配置中调用方法
to: getEmailRecipient()

如果是自由风格项目,可在Email Extension插件的"Pre-send Script"里用类似逻辑,或者直接在收件人字段使用条件表达式:

${BUILD_CAUSE_TIMERTRIGGER?'maintenance-team@example.com':BUILD_USER_EMAIL}

3. 全局配置默认收件人

如果所有定时任务都需要发送到统一的邮箱,可在Jenkins全局配置中设置:

  • 进入系统管理 → 系统配置
  • 找到邮件通知板块,填写"默认收件人"
  • 此配置会作为所有邮件任务的兜底收件人,当任务自身配置的收件人为空时自动生效

注意事项

  • 确保默认邮箱地址正确且能正常接收邮件
  • 如果使用Email Extension插件,需确认插件版本支持Groovy表达式或条件变量
  • 测试时可手动触发和定时触发各跑一次,验证收件人逻辑是否生效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 21:45:08