Jenkins电子邮件插件不会向破坏构建的用户发送电子邮件

时间:2017-07-27 12:23:33

标签: email jenkins

我已将Jenkins设置为仅向使用email-ext插件破坏构建的用户发送电子邮件,但我收到此错误:

  

不向未注册用户user@example.com发送邮件,因为您的SCM声称这与用户ID'John Smith'您的安全领域无法识别;您可能需要更改SCM插件

我真的不明白这个错误意味着什么,我们的SCM或电子邮件插件中的问题是什么?电子邮件是从提交历史中提取的,我应该在某处注册,以便Jenkins开始工作吗?

供参考,插件的源代码中为this is the code around the error message

                    } catch (UsernameNotFoundException x) {
                        if (SEND_TO_UNKNOWN_USERS) {
                            listener.getLogger().printf("Warning: %s is not a recognized user, but sending mail anyway%n", userAddress);
                        } else {
                            listener.getLogger().printf("Not sending mail to unregistered user %s because your SCM"
                    ........

如何启用SEND_TO_UNKNOWN_USERS

bug report中也提到了错误消息。

4 个答案:

答案 0 :(得分:25)

对于版本V2.61或更高版本,可以通过单选按钮进行配置。

转到

  

管理Jenkins - >配置系统 - >扩展电子邮件通知

并勾选允许向未注册用户发送

的单选按钮

enter image description here

答案 1 :(得分:12)

好的,经过一些实验,这就是我发现的:

Jenkins接受提交者的电子邮件部分(不是作者)。例如,对于看起来像这样的提交消息:

Author: John Smith <author1@example1.com>  2017-07-27 17:15:39
Committer: John Doe <committer1@example2.com>  2017-07-27 17:15:39
Parent: 9c3ff18dda8ca6f7b7ac4ebab4c76d3c85891a33 (commit)
Branch: master

Jenkins将采用&#34; committer1&#34;,并在具有用户ID和#34; committer1&#34;的人员下创建一个全新的用户。并发送电子邮件&#34;&#34;。除非该用户有密码,否则它将被视为未注册,因此您需要转到该用户的配置并为其添加密码字段:

enter image description here

所以这是解决错误的一种方法,但是你必须为每个用户和大团队做这件事,这可能很乏味。

答案 2 :(得分:8)

将下面的行放在你的jenkins启动脚本中

-Dhudson.tasks.MailSender.SEND_TO_UNKNOWN_USERS=true

最新的Jenkins安全指令仅允许向注册用户发送邮件。上面的一行绕过了这个配置。

答案 3 :(得分:1)

鉴于jenkins接收了电子邮件地址的第一部分并创建了一个用户,我让我的团队将他们的jenkins用户名作为他们电子邮件地址的第一部分。这消除了必须维护两个独立用户的任何开销。