前言

最近搭建Maven+Testng+jenkins的持续集成环境,希望最后实现自动邮件运行结果报告,结果设置就费了两天时间(还没实现预期效果),记录下过程分享给需要的人。文章部分内容摘录自网络博客,部分来自官网翻译。

jenkins 内置了邮件功能,就是邮件通知, 由于它的功能太过单一无法满足需要;于是扩展插件就诞生了;文章中这两个邮件的配置都会介绍到。

内置邮件的配置与使用

jenkins内置邮件的配置相对比较简单。

  1. 系统配置
    打开jenkins的系统管理->系统设置(Jenkins—>Manage Jenkins—>configure system),进入配置页面,如下图所示:

该处主要设置系统全局发件服务器,该邮件必须已经开启POP3/STMP服务,否则报错。

Have a Try :勾选 "通过发送测试邮件配置"测试此配置能否连通, 如果收到以下邮件:This is test email #1 sent from Jenkins 恭喜,配置成功!

  1. 项目配置

 

打开jenkins的系统管理->点击进入项目->配置,配置如下

Jenkins配置cloud pod Jenkins配置邮件_java

点击保存,设置完成。执行构建,运行报告会根据你的设置发送报告。虽然该报告非常简单,但至少能用了。

邮件插件的配置与使用

  1. 安装插件 安装插件"Email-ext plugin";可以在线安装也可以官网下载后离线安装。具体操作可参考:
     
  2. 系统配置 打开jenkins的系统管理->系统设置(Jenkins—>Manage Jenkins—>configure system),进入配置页面
    设置内容与内置邮件设置类似

Jenkins配置cloud pod Jenkins配置邮件_java_02

  1. 项目配置 1)打开jenkins的系统管理->点击进入Job->配置,添加构建后步骤"Editable Email Notification"

Jenkins配置cloud pod Jenkins配置邮件_Jenkins_03

目前附件仅实现发送文件,发送目录最终按照目录下的文件一个个显示。附件路径以<Jenkins Home>\jobs\<JobName>\workspace为跟目录,目前仅实现发送workspace目录下内容;

更灵活应用还在学习中,有高手可以留言解决方案

    2)设置邮件发送触发器

点击上图中的 Advanced Settings,打开触发设置面板;点击"add trigger"选择触发条件

Jenkins配置cloud pod Jenkins配置邮件_系统管理_04

再触发条件下设置Send To对象;点击保存,设置成功。

 

 

附录A


附录B

  1. 勾选 "通过发送测试邮件配置",点击"test configuration"按钮,显示报错如下:  

Failed to send out e-mail

com.sun.mail.smtp.SMTPSendFailedException: 501 mail from address must be same as authorization user;

nested exception is:

com.sun.mail.smtp.SMTPSenderFailedException: 501 mail from address must be same as authorization user

at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:2057)

at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:1580)

at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1097)

at javax.mail.Transport.send0(Transport.java:195)

at javax.mail.Transport.send(Transport.java:124)

at hudson.tasks.Mailer$DescriptorImpl.doSendTestMail(Mailer.java:522)

………………………………….

Caused by: com.sun.mail.smtp.SMTPSenderFailedException: 501 mail from address must be same as authorization user at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:1587)

        ... 62 more

解决办法:系统设置中,系统管理员邮件地址必须与系统设置中邮件通知下SMTP的发件地址一致

Jenkins配置cloud pod Jenkins配置邮件_系统管理_05

Jenkins配置cloud pod Jenkins配置邮件_Jenkins配置cloud pod_06

分析原因:未知