Jenkins 如何配置邮件通知流水线执行结果

大强大大_8951

大强大大_8951

2026-09-04

503人浏览

原创

核心是安装email extension插件并配置post块逻辑:先在系统管理中安装插件、设置smtp(如smtp.qq.com:465)、验证测试邮件;再在jenkinsfile的post段用emailext按success/failure等状态发送html邮件,支持动态收件人与外部模板。

jenkins 如何配置邮件通知流水线执行结果

Jenkins 配置邮件通知流水线执行结果,核心是两步:装对插件 + 写对 post 段逻辑。系统自带的邮件功能太简陋,必须用 Email Extension Plugin 才能发 HTML 格式、带链接、按状态区分的邮件。

安装并配置 Email Extension 插件

进入 Jenkins → 系统管理 → 插件管理 → 可选插件,搜索 Email Extension Plugin 并安装(重启 Jenkins 后生效)。安装完后,进入 系统管理 → 系统设置,向下滚动找到 Extended E-mail Notification 区域:

  • SMTP 服务器地址填你邮箱服务商的 SMTP 地址(如 QQ 邮箱填 smtp.qq.com,163 填 smtp.163.com)
  • 端口一般为 465(启用 SSL)或 587(启用 TLS),QQ/163/腾讯企业邮箱都推荐用 465 + SSL
  • 用户名填你的完整邮箱地址,密码填邮箱授权码(不是登录密码!需在邮箱网页端开启 SMTP 并生成)
  • 系统管理员邮件地址要和上面用户名一致,否则发信失败
  • 拉到最下方点 Test configuration,输入测试收件人邮箱,确认能收到测试邮件

在 Pipeline 脚本中定义 post 通知逻辑

邮件发送动作写在 pipeline 的 post 块里,按构建状态触发。下面是最常用、最清晰的写法:

  • 成功时发 HTML 邮件:用 emailext 指令,主题含项目名和编号,正文中嵌入关键链接(控制台日志、构建页、项目页)
  • 失败时单独通知:主题标“失败”,正文可加失败原因(${BUILD_CAUSE})、错误日志片段(需配合 archiveArtifacts 或脚本提取)
  • unstable(不稳)和 changed(状态变更)也建议保留,避免漏掉测试失败但未中断构建的情况

示例 post 段(可直接复制进 Jenkinsfile):

post {
  always {
    script {
      echo "构建流程已结束"
    }
  }
  success {
    emailext (
      subject: "SUCCESS: ${env.JOB_NAME} [${env.BUILD_NUMBER}]",
      body: """<h2>✅ 构建成功</h2>
        <p><strong>项目:</strong>${env.JOB_NAME}</p>
        <p><strong>构建编号:</strong>${env.BUILD_NUMBER}</p>
        <p><strong>触发原因:</strong>${env.CAUSE}</p>
        <p><strong>构建地址:</strong><a href="https://www.php.cn/link/4d943353921b74e69c7295875e363014">https://www.php.cn/link/4d943353921b74e69c7295875e363014</a></p><div class="aritcle_card flexRow artxards">
											<div class="artcardd flexRow">
												<a class="aritcle_card_img" rel="nofollow" href="/xiazai/skill2790" title="Jenkins"><img
														src="https://img.php.cn/upload/skill/000/000/081/178936589133238.jpg" alt="Jenkins" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a>
												<div class="aritcle_card_info flexColumn">
													<a rel="nofollow" href="/xiazai/skill2790" title="Jenkins" class="overflowclass">Jenkins</a>
													<p class="overflowclass">通过 REST API 与 Jenkins CI/CD 服务器交互。适用于触发构建、查询状态、查看控制台输出、管理任务或监控 Jenkins...</p>
												</div>
												<a rel="nofollow" href="/xiazai/skill2790" title="Jenkins" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span>
												</a>
											</div>
										</div>
        <p><strong>控制台日志:</strong><a href="https://www.php.cn/link/4d943353921b74e69c7295875e363014console">https://www.php.cn/link/4d943353921b74e69c7295875e363014console</a></p>
      """,
      recipientProviders: [[$class: 'DevelopersRecipientProvider']],
      to: 'team@example.com',
      mimeType: 'text/html'
    )
  }
  failure {
    emailext (
      subject: "FAILED: ${env.JOB_NAME} [${env.BUILD_NUMBER}]",
      body: """<h2>❌ 构建失败</h2>
        <p><strong>项目:</strong>${env.JOB_NAME}</p>
        <p><strong>构建编号:</strong>${env.BUILD_NUMBER}</p>
        <p><strong>失败时间:</strong>${env.BUILD_TIMESTAMP}</p>
        <p><strong>控制台日志:</strong><a href="https://www.php.cn/link/4d943353921b74e69c7295875e363014console">https://www.php.cn/link/4d943353921b74e69c7295875e363014console</a></p>
      """,
      to: 'devops@example.com',
      mimeType: 'text/html'
    )
  }
}

收件人与模板可灵活控制

不用硬编码邮箱,更推荐用变量或策略动态指定收件人:

  • 用 recipientProviders 自动取提交者邮箱(DevelopersRecipientProvider)或上次构建失败责任人(RequesterRecipientProvider)
  • 把 HTML 模板抽成独立文件(如 email-template.html),放在 Jenkins 共享库或 job 工作区,用 readFileFromWorkspace 加载,便于统一维护
  • 模板里支持所有 Jenkins 环境变量:${BUILD_STATUS}、${PROJECT_URL}、${FAILED_TESTS}(需配合 JUnit 插件)等

常见卡点排查

邮件发不出?优先检查这三项:

  • SMTP 授权码是否过期(尤其 163/QQ 邮箱,授权码常半年一换)
  • Jenkins 日志(Manage Jenkins → System Log → All Logs)里有没有 javax.mail.AuthenticationFailedException 或连接超时报错
  • Pipeline 脚本里是否误用了 mail(旧版内置指令),而没用 emailext(Email Extension 插件指令)

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

jenkins

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Docker容器化部署与DevOps实践
Docker容器化部署与DevOps实践

本专题面向后端与运维开发者,系统讲解 Docker 容器化技术在实际项目中的应用。内容涵盖 Docker 镜像构建、容器运行机制、Docker Compose 多服务编排,以及在 DevOps 流程中的持续集成与持续部署实践。通过真实场景演示,帮助开发者实现应用的快速部署、环境一致性与运维自动化。

2026.02.11

219

16

LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

2026.09.30

60

10

LLVM RISC-V参数配置教程
LLVM RISC-V参数配置教程

本专题介绍LLVM对RISC-V基础ISA和扩展的支持方式,涵盖RV32、RV64、标准扩展、实验性扩展、厂商扩展、-menable-experimental-extensions和版本差异。

2026.09.30

60

14

LLVM IR中间表示入门指南
LLVM IR中间表示入门指南

本专题整理LLVM IR的核心概念,包括中间表示作用、模块结构、函数、基本块、SSA形式、类型系统和常见语法,帮助新手理解LLVM编译流程中的关键层。

2026.09.30

40

12

PDF转图片方法
PDF转图片方法

需要把 PDF 页面用于上传、预览、分享或图片归档时,PDF 转图片方法专题整理 JPG/PNG 格式选择、逐页导出、清晰度设置、批量下载和结果检查等流程,帮助用户稳定完成 PDF 图片化处理。

2026.09.30

40

26

PixTV AI视频生成与无限画布创作
PixTV AI视频生成与无限画布创作

PixTV专题整理AI视频与视觉内容创作相关功能使用教程,涵盖AI生图、视频生成、无限画布、多模型创作、素材管理、声音音乐及视频剪辑等功能,帮助用户快速掌握PixTV从创意到成片的完整制作方法。

2026.09.29

40

15

Buffalo框架数据库开发全教程
Buffalo框架数据库开发全教程

本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。

2026.09.23

240

15

Buffalo框架路由与请求处理实操指南
Buffalo框架路由与请求处理实操指南

本专题讲解Buffalo框架路由与请求处理机制,涵盖路由注册与分组、资源路由、Handler编写规范、Context上下文方法、参数绑定、中间件编写挂载、Session与Cookie读写、Flash消息及错误页面定制方法。

2026.09.23

160

15

Buffalo框架零基础入门教程
Buffalo框架零基础入门教程

本专题整理Buffalo框架入门内容,涵盖Go环境准备、buffalo CLI安装、新项目生成、目录结构说明、dev热加载启动、数据库连接配置与常见报错排查,帮助新手按约定优于配置的思路跑通第一个Buffalo框架应用。

2026.09.23

120

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.6万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.4万人学习