Jenkins 詹金斯管道无法正确发送电子邮件

Jenkins 詹金斯管道无法正确发送电子邮件,jenkins,jenkins-plugins,jenkins-pipeline,Jenkins,Jenkins Plugins,Jenkins Pipeline,最近,我们开始将jenkins的工作转移到jenkins管道,我们在发送电子邮件方面遇到了一些问题 如果我做这样的事 node('WCH-Regression') { // do the first test stage 'Test' node { try { sh 'exit 1' } catch(err) { echo "Error" currentBuild.re

最近,我们开始将jenkins的工作转移到jenkins管道,我们在发送电子邮件方面遇到了一些问题

如果我做这样的事

node('WCH-Regression') {
    // do the first test
    stage 'Test'
    node {
        try {
            sh 'exit 1'
        } catch(err) {
            echo "Error"
            currentBuild.result = "FAILURE"
        } finally {
                step([$class                  : 'Mailer',
                  notifyEveryUnstableBuild: true,
                  recipients              : "ppolivka@xxx.yyy",
                  sendToIndividuals       : true])
        }
    }
}
该电子邮件已在作业日志中确认,但从未发送

[Pipeline] {
[Pipeline] sh
[workspace] Running shell script
+ exit 1
[Pipeline] echo
Error
[Pipeline] step
Sending e-mails to: ppolivka@xxx.yyy
[Pipeline] }
[Pipeline] // node
如果我在正常的Jenkins工作中做同样的事情,电子邮件就会发送。此外,还可以通过“管理Jenkins”中的电子邮件配置测试电子邮件。 我是否需要以某种方式为管道启用电子邮件

我们正在跑步 詹金斯:2.7.2 管道插件2.2 Mailer插件1.17

我只是试着简单地通过

node {
    mail body: 'test', subject: 'test', to: 'ppolivka@xxx.yyy'
}

但仍然没有收到任何东西。我在jenkins中的电子邮件配置很好,所有其他非管道作业都在发送电子邮件,来自电子邮件通知配置的测试电子邮件正在工作。为什么管道电子邮件不会被发送?

尝试重新抛出异常(在catch中)以确保生成失败并停止

尝试重新抛出异常(在catch中)以确保生成失败并停止

我们最终解决了这个问题

我对管道电子邮件代码进行了一些“调试”

node {
    def transportClass = javax.mail.Session.getDefaultInstance(java.lang.System.getProperties(), (javax.mail.Authenticator)null).getTransport(new javax.mail.internet.InternetAddress("ppolivka@xxx.com")).getClass();
    echo transportClass.toString();
    mail body: 'test', subject: 'test', to: 'ppolivka@xxx.com'
} 
从这一点上,我注意到用过的电子邮件传送者是被嘲笑的

[Pipeline] {
[Pipeline] echo
class org.jvnet.mock_javamail.MockTransport
[Pipeline] mail
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS
当类路径上有
mock javamail.jar
时,就会发生这种情况。 我浏览了我们的Jenkins插件,发现有人添加了不是来自Jenkins存储库的插件,而是来自其他团队的人手工构建的插件。
这个插件在类路径上有这个jar。在插件被删除,Jenkins重新启动后,邮件开始工作。

我们终于解决了这个问题

我对管道电子邮件代码进行了一些“调试”

node {
    def transportClass = javax.mail.Session.getDefaultInstance(java.lang.System.getProperties(), (javax.mail.Authenticator)null).getTransport(new javax.mail.internet.InternetAddress("ppolivka@xxx.com")).getClass();
    echo transportClass.toString();
    mail body: 'test', subject: 'test', to: 'ppolivka@xxx.com'
} 
从这一点上,我注意到用过的电子邮件传送者是被嘲笑的

[Pipeline] {
[Pipeline] echo
class org.jvnet.mock_javamail.MockTransport
[Pipeline] mail
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS
当类路径上有
mock javamail.jar
时,就会发生这种情况。 我浏览了我们的Jenkins插件,发现有人添加了不是来自Jenkins存储库的插件,而是来自其他团队的人手工构建的插件。
这个插件在类路径上有这个jar。在删除插件并重新启动Jenkins后,邮件开始工作。

仍然无效。日志是相同的<代码>发送电子邮件至:ppolivka@xxx.yyy已在日志中,但未收到电子邮件。这对您有帮助吗?我基本上是从这个问题中复制代码的。但它没有发送电子邮件,还是什么都没有。日志是相同的<代码>发送电子邮件至:ppolivka@xxx.yyy已在日志中,但未收到电子邮件。这对您有帮助吗?我基本上是从这个问题中复制代码的。但它不会发送电子邮件。