一、安装插件

email-ext.hpi

插件安装方式参考Jenkins的四种插件安装方式

二、设定管理员邮箱

Manager Jenkins -> Configure System -> Jenkins Location

系统管理员邮箱地址将作为未来邮件的发件方,收件方可以在每个构建中各自指定(步骤)。

jenkins发送邮件失败 jenkins发送邮件带附件_服务器

三、配置邮件通知

Manager Jenkins -> Configure System -> E-mail Notification

1、设定使用的SMTP服务器

如果是常规的邮箱直接去邮箱设置里面查看即可SMTP服务器即可,内网邮箱或者自行搭建的内部邮件系统可能需要询问搭建人员。

jenkins发送邮件失败 jenkins发送邮件带附件_jenkins发送邮件失败_02


使用的邮箱需保证开启了SMTP服务,开启方式:登录邮箱界面 -> 设置 -> 开启服务。


设置界面下滑可以看到SMTP服务器。

jenkins发送邮件失败 jenkins发送邮件带附件_Jenkins_03

2、设定使用的SMTP认证信息

步骤1中点击高级之后出现认证信息,认证信息可以输入邮箱的账号完整的账号密码,也可以使用邮箱名(不带后缀)作为用户名,获取授权码作为密码,示例中使用的是邮箱名+授权码的认证方式。

一般情况下,比如使用一些常见的邮箱(qq、网易等)仅支持邮箱名+授权码的认证方式,只有少数情况,比如自搭邮件系统、内部网络、自定义域才可以使用账号+密码的登陆方式。
SMTP端口的选择可以基于具体要求,如果选择使用SSL,则需使用465端口并勾选使用SSL协议,如果不使用SSL则使用25端口即可,示例中使用的是SMTP over SSL的方式进行配置

关于端口号的含义可以参考:什么是SMTP端口号(25、587、465、2525)?

jenkins发送邮件失败 jenkins发送邮件带附件_jenkins发送邮件失败_04


首次开启SMTP时会出现一个授权码,该授权码仅显示一次,此后如果需要获取授权码则可以选择新增授权密码。

jenkins发送邮件失败 jenkins发送邮件带附件_SSL_05


点击新增授权密码后用手机扫码,使用绑定的手机号发短信即可获得一个新的授权码。

jenkins发送邮件失败 jenkins发送邮件带附件_jenkins发送邮件失败_06

3、测试是否配置成功

勾选Test configuration by sending test e-mail后会出现测试框,在测试框中填入收件方邮箱后点击Test configuration,即会发送一封邮件到收件方邮箱中,如发送成功则该界面会显示Email was successfully sent,否则将会显示错误信息。

jenkins发送邮件失败 jenkins发送邮件带附件_jenkins发送邮件失败_07


若发送成功则收件方可以收到一封测试邮件,邮件中包含测试次数的信息,发送失败不会收到邮件但是也会被计数。

jenkins发送邮件失败 jenkins发送邮件带附件_SSL_08

四、配置扩展邮件通知

Manager Jenkins -> Configure System -> Extended E-mail Notification

1、设定使用的SMTP服务器(同邮件通知)

jenkins发送邮件失败 jenkins发送邮件带附件_jenkins_09

2、设定使用的SMTP认证信息(同邮件通知)

选择高级后添加SMTP的认证并启用SSL。

若已经添加过证书则直接选用即可,若没有则需添加证书。

jenkins发送邮件失败 jenkins发送邮件带附件_服务器_10


添加证书,认证方式同上完整邮箱的账号密码 / 邮箱名+授权码。

jenkins发送邮件失败 jenkins发送邮件带附件_SSL_11

jenkins发送邮件失败 jenkins发送邮件带附件_SSL_12

五、在构建项目时加入邮件通知

1、添加构建后操作

在构建项目时增加构建后操作步骤:Editable Email Notification

jenkins发送邮件失败 jenkins发送邮件带附件_SSL_13

2、设置邮件接收列表

在Project Recipient List中加入收件邮箱,若有多个收件邮箱使用英文逗号分隔即可。

jenkins发送邮件失败 jenkins发送邮件带附件_服务器_14

3、设置邮件格式,标题及内容

jenkins发送邮件失败 jenkins发送邮件带附件_jenkins_15


分享一个我个人比较喜欢用的邮件模板:

<!DOCTYPE html>    
<html>    
<head>    
<meta charset="UTF-8">    
<title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次构建日志</title>    
</head>    
<body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4"    
offset="0">    
    <table width="95%" cellpadding="0" cellspacing="0"  style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">    
    <tr>    
        本邮件由系统自动发出,无需回复!<br/>            
        各位同事,大家好,以下为${PROJECT_NAME }项目构建信息</br> 
        <td><font color="#CC0000">构建结果 - ${BUILD_STATUS}</font></td>   
    </tr>    
    <tr>    
        <td><br />    
        <b><font color="#0B610B">构建信息</font></b>    
        <hr size="2" width="100%" align="center" /></td>    
    </tr>    
    <tr>    
        <td>    
            <ul>    
                <li>项目名称 : ${PROJECT_NAME}</li>    
                <li>项目描述 : ${JOB_DESCRIPTION}</li>    
                <li>构建编号 : 第${BUILD_NUMBER}次构建</li>    
                <li>触发原因: ${CAUSE}</li>    
                <li>构建状态: ${BUILD_STATUS}</li>    
                <li>构建日志: <a href="${BUILD_URL}console">${BUILD_URL}console</a></li>    
                <li>构建  Url : <a href="${BUILD_URL}">${BUILD_URL}</a></li>    
                <li>工作目录 : <a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li>    
                <li>项目  Url : <a href="${PROJECT_URL}">${PROJECT_URL}</a></li>    
            </ul>    
        </td>    
    </tr>    
    <tr> 
        <td><b><font color="#0B610B">变更集</font></b>
        <hr size="2" width="100%" align="center" /></td>    
    </tr>
        <td>${JELLY_SCRIPT,template="html"}<br/>
            <hr size="2" width="100%" align="center" /></td>    
        </tr>
    </table>    
</body>    
</html>

邮件发送效果图:

jenkins发送邮件失败 jenkins发送邮件带附件_jenkins_16


如果从上次构建结束到此次构建开始的时间中svn进行了更新,则可以显示每一版本变更的文件及操作者。

jenkins发送邮件失败 jenkins发送邮件带附件_jenkins发送邮件失败_17

3、选择是否发送构建日志作为邮件附件

Do Not Attach Build Log:不发送构建日志

Attach Build Log:发送构建日志

Compress and Attach Build Log:压缩并发送构建日志

如果需要发送构建日志建议使用Attach Build Log,这样很多的邮箱客户端可以直接打开附件进行查看,如outlook。

jenkins发送邮件失败 jenkins发送邮件带附件_jenkins_18


jenkins发送邮件失败 jenkins发送邮件带附件_Jenkins_19

4、设置发送契机

不同的测试结果可以选择发给不同的收件方,但是邮件模板只能使用同一个。

jenkins发送邮件失败 jenkins发送邮件带附件_服务器_20