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

Jenkins流水线发送邮件报java.lang.NoSuchMethodError故障排查求助

Jenkins流水线发送邮件报错java.lang.NoSuchMethodError解决方法

问题描述

使用Jenkins流水线发送邮件时,控制台抛出以下错误:

[Pipeline] { (Declarative: Post Actions)
[Pipeline] mail
Error when executing always post condition:
java.lang.NoSuchMethodError: 'jenkins.plugins.mailer.tasks.MimeMessageBuilder jenkins.plugins.mailer.tasks.MimeMessageBuilder.addRecipients(java.lang.String, javax.mail.Message$RecipientType)'
    at org.jenkinsci.plugins.workflow.steps.MailStep$MailStepExecution.buildMimeMessage(MailStep.java:167)
    at org.jenkinsci.plugins.workflow.steps.MailStep$MailStepExecution.run(MailStep.java:142)
    at org.jenkinsci.plugins.workflow.steps.MailStep$MailStepExecution.run(MailStep.java:129)
    at org.jenkinsci.plugins.workflow.steps.SynchronousNonBlockingStepExecution.lambda$start$0(SynchronousNonBlockingStepExecution.java:47)
    at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
    at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.base/java.lang.Thread.run(Unknown Source)

流水线代码如下:

pipeline {
    agent any
    stages {
        stage('Hello') {
            steps {
                echo "Hello world"
            }
        }
    }
    post{
        always{
            mail to: "15283666096@163.com",
            subject: "Test Email",
            body: "Test"
        }
    }
}

问题原因

该错误由插件版本不兼容导致:流水线mail步骤(来自Pipeline: Basic Steps插件)调用了mailer插件中不存在的方法,通常是mailer插件版本过低,或Pipeline: Basic Steps插件版本过高,两者适配性不匹配。

解决方法

1. 匹配mailer插件与Jenkins核心版本

  • 查看当前Jenkins核心版本(首页右下角可查看)
  • 进入「插件管理」→「可用插件」,搜索mailer插件,查看详情中的兼容Jenkins版本,选择匹配版本安装
  • 示例:Jenkins 2.289.x适配mailer插件2.39版本;Jenkins 2.300+可安装最新稳定版(如2.45+)

2. 同步Pipeline: Basic Steps插件版本

  • 进入「插件管理」→「已安装插件」,找到Pipeline: Basic Steps插件,确保其版本与mailer插件、Jenkins核心版本兼容
  • 若版本过高,可降级到与当前mailer插件匹配的版本

3. 替代方案:使用Email Extension插件(更稳定)

若版本调整有困难,可改用功能更完善的Email Extension插件,流水线代码修改如下:

pipeline {
    agent any
    stages {
        stage('Hello') {
            steps {
                echo "Hello world"
            }
        }
    }
    post{
        always{
            emailext to: "15283666096@163.com",
                    subject: "Test Email",
                    body: "Test"
        }
    }
}
  • 需先在插件管理中安装Email Extension插件,该插件兼容性更好,支持更多邮件配置选项

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 21:27:35