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
相关产品推荐
相关产品推荐

