这两天在Jenkins上配置项目的自动编译及自动测试,但是在配置邮件通知时遇到了坑,花了整整一天才配置好,所以把配置的过程记录下来。
我的项目是在Windows平台开发的,我用的是Windows10操作系统,申请了一个微软的outlook.com后缀邮箱作为管理员,Jenkins是在官网上下载的,版本是2.204.2。从网上查到的别人的反馈,用不同的邮件提供商的设置会有不同,目前我只测试了微软的outlook邮箱,其他不一定适用,另外,我暂时没有用扩展的邮件插件,只是用Jenkins默认的
outlook的SMTP参数
首先看一下Outlook的STMP设置。点击outlook邮箱网页的右上角齿轮图标,然后点击查看全部Outlook设置,选择“邮件”->“同步电子邮件”页面,可以看到Outlook的SMTP设置参数:
服务器名称: smtp.office365.com
端口: 587
加密方法: STARTTLS
注意这里的STARTTLS,是导致Jenkins上出现坑的一个参数。
Jenkins的启动参数
Jenkins的启动参数在jenkins.xml这个文件里,jenkins.xml在Jenkins的安装目录上,在我电脑上是C:\Program Files (x86)\Jenkins。用管理员权限(因为我把Jenkins安装在了需要管理员权限的目录下)打开后,修改<service>下的<arguments>这一项,在原来的基础上增加-Dmail.smtp.starttls.enable=true
,就可以在发送邮件时使用STARTTLS。添加参数后需要重启jenkinss,重启的方法是重启电脑,或者用管理员权限在用cmd进入jenkins安装目录并输入jenkins.exe restart
。
Jenkins的设置参数
在Jenkins的网页界面上,下拉听不左侧第二栏的Jenkins右边的下三角,选择“Manage Jenkins”->“Configure System”
系统管理员邮件地址
这是第一个坑,对所有邮件提供商的都适用,邮件的系统管理员邮件地址必须与后面的邮件设置的一致,否则发送会失败。
在Jenkins Location一栏的“系统管理员邮件地址”填上邮件管理员地址someone@hotmail.com。
邮件通知设置
在“邮件通知”一栏如下设置:
SMTP服务器:smtp.office365.com
用户默认邮件后缀:(留空或@outlook.com)
使用SMTP认证:选上
用户名:someone@outlook.com或someone
密码:(邮箱密码)
使用SSL协议:否
SMTP端口:587
这里重点是SSL协议选择否,outlook使用的是STARTTLS加密方式,而不是SSL协议,这个在要在启动参数那里设置,设置后SSL就不用选了。
如上设置后,测试邮件应该就可以发送成功了!项目的邮件通知设置按直觉设置就好,没遇到什么坑,不在此讨论了。