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

Jenkins Email-ext插件:如何将文件内容按行展示在邮件正文中?

解决Jenkins Email-ext邮件中列表格式问题

问题场景

使用Jenkins Email-ext插件时,通过readFile读取文件内容并转为列表后,邮件中列表显示为带方括号和逗号的格式(如[Test1,Test2,Test3]),期望改为每行单独显示一个条目。

解决方案

核心是将列表元素转换为HTML格式的换行结构,因为邮件设置了mimeType: 'text/html',可利用HTML的<br>标签实现换行:

修改post阶段中body部分的${linesInFile}为${linesInFile.join("<br>")},具体代码调整如下:

post{
  success{
    def fileDetails = readFile "./EnvironmentLinks.txt"
    def linesInFile = fileDetails.readLines()
    emailext to: "${env.DEFAULT_MAIL_LIST}",
             mimeType: 'text/html',
             from: "noreply@test.com",
             attachmentsPattern: '**/html-report/*.html',
             subject: "Test Email",
             body: """&lt;p style=font-family:calibri;font-size:15px&gt;Hi - This is a test email &lt;/p&gt;&lt;p style=font-family:calibri;font-size:13.7px;&gt;&lt;b&gt;File Details:&lt;/b&gt;&lt;br&gt;${linesInFile.join("<br>")}&lt;/p&gt;"""
  }
}

原理说明

  • linesInFile是List类型变量,直接插入HTML中会默认调用其toString()方法,输出带方括号和逗号的格式。
  • join("<br>")方法会将列表中的每个元素用<br>拼接成字符串,在HTML邮件中<br>会被解析为换行,从而实现每行显示一个条目。

额外优化建议

如果文件中存在空行,可先过滤空行再拼接:

def linesInFile = fileDetails.readLines().findAll { it.trim() != "" }

内容的提问来源于stack exchange,提问作者RMS-QA

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 16:37:16