首页 > 解决方案 > 无法在我的 Jenkins 管道中触发电子邮件

问题描述

我正在涉足 Jenkins 管道的世界。

我的目标是运行一个简单的脚本,在 linux bash 中运行一个简单的命令,然后在脚本完成后发送一封电子邮件。这是我的脚本:

pipeline {
agent any


stages {
    stage('Stage-One') {
        steps {
            script {
                sh "echo 'hi'"

            }
        }
    }
}


post {
    always {
            script {
                emailext body: 'A Test Email', 
                recipientProviders: [[$class: 'DevelopersRecipientProvider'], [$class: 'RequesterRecipientProvider']],
                to: "example@server.com", 
                subject: 'Test'
            }
    }
}
}

就我而言,我已在->中的E-mail Notification设置下将我的工作电子邮件设置为我的电子邮件。我使用相同的电子邮件在其他 Jenkins 项目(即运行 python 脚本/项目)中发送电子邮件,所以这应该可以工作。然而,在实践中,没有收到任何电子邮件,并且查看发送电子邮件的电子邮件帐户表明没有发送任何电子邮件。JenkinsConfiguration

控制台输出中也没有出现错误,但也没有指示成功的消息:

[Pipeline] {
[Pipeline] stage
[Pipeline] { (Stage-One)
[Pipeline] script
[Pipeline] {
[Pipeline] sh
+ echo hi
hi
[Pipeline] }
[Pipeline] // script
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Declarative: Post Actions)
[Pipeline] script
[Pipeline] {
[Pipeline] emailext
Sending email to: example@server.com
[Pipeline] }
[Pipeline] // script
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS

我的 Jenkins 版本是 2.150.1,电子邮件扩展版本是 2.63。谁能概述问题可能出在哪里?奇怪的是我没有收到任何错误。*

标签: emailjenkins

解决方案


试试这个在 emailext 之前定义正文的技巧

def emailBody = 'A Test Email'
def emailSubject = "Test"
emailext(mimeType: 'text/html', replyTo: 'xxxx', subject: emailSubject, to: 'xxxx', body: emailBody)

推荐阅读