前言:

首先,要有一个用来发送的邮箱,首选网易!参考:http://www.cnblogs.com/EasonJim/p/6051636.html,这里我注册了网易的免费企业邮箱。

并且我新建没多个邮箱用来对应不同的Job。

技巧:

先确保邮箱的smtp功能能正常使用,现在jenkins机器上装一个foxmail,确定能正常收发。

很多种情况邮箱类型很多,先用最简单的网易邮箱配置好后,测试收发正常。待正常后再换成特定的企业邮箱来配置。

正题:

Jenkins发送邮件有几种配置方式:

1、使用内置的邮件插进(使用全局的配置,只能有一个接收方)

2、使用邮件扩展插件【Email Extension Plugin】(使用全局的配置,能有多个接收方,但是只能有一个发送方)

3、使用邮件扩展插件【Email Extension Plugin】+Groovy脚本(实现每个Job对应不同的发送邮件,多个发送方)

4、开发邮件转发中间件或者使用Foxmail这些工具来转发(每个Job发送到对应的邮箱,然后中间件负责转发到成员列表的邮箱。对发送插件没什么要求,只要能发送即可)

5、走国际路线,使用【Googole网上论坛】即groups.google.com(通过邀请实现进入群组,然后jenkins只要发送邮件到这个群组油箱即可)

具体操作:

注意:操作涉及的邮箱为163免费企业邮箱

1、使用内置的邮件插进

【系统管理】->【系统设置】->【邮件通知】->【高级】,配置如下:

参照如上配置,勾选【通过发送测试邮件测试配置】进行发送配置。

如果出现“Failed to send out e-mail”,那么说明没有配置好【系统管理员邮件地址】

配置【系统管理员邮件地址】时,要和SMTP认证的用户名保持一致,不然无法发送。

上面的发送时有个小技巧,【显示的名称 <邮件地址>】(中间有个空格),这样的形式发送后会在邮件提示窗口显示邮件的别名。

最后,在Job页面上增加【增加构建后操作步骤】->【E-mail Notification】,配置要接收人的邮箱,很显然,这里只能写一个人的地址,且配置单一。如果要发送到多人,可以尝试上述第4点开发中间件实现。

2、使用邮件扩展插件

【系统管理】->【系统设置】->【Extended E-mail Notification】->【高级】,配置如下:

其余都留空,根据需要配置。

同样,【Use SMTP Authentication】下的【User Name】也要和【系统管理员邮件地址】保持一致

配置【系统管理员邮件地址】时,要和SMTP认证的用户名保持一致,不然无法发送。

最后,在Job页面上增加【增加构建后操作步骤】->【Editable Email Notification】,配置要接收人的邮箱列表

很显然,这里可以配置多个收件人,且配置点很多,包括构建点的触发发送,都可选择。

提示:触发点一般时always,这样发送的时候不管成功还是失败都会有日志。

提示2:构建的日志一般附带上去,这样方便排查

3、使用邮件扩展插件+Groovy脚本

通过上面第2部的配置可以发现,邮件发送人只能配置一个,而且只能是全局的;那么要对应每个Job对应不同的发送人就需要用到Groovy脚本去实现。

通过研究邮件扩展插件【Email Extension Plugin】的源码发现,其提供的接口无法实现在每个Job下动态设置临时发送人,只能设置到全局的配置上面;如果设置到全局会有一个弊端,比如构建在同一个时间点发送邮件,那么可能存在零界点的情况导致发送人错乱,不过一般构建不会搭建太多,所以也可忽视。

在Job的【Editable Email Notification】上,打开【Advanced Settings...】,在【Pre-send Script】(Pre-send表示在发送前的事件)上写入设置邮件的Groovy脚本:

import jenkins.model.*
import hudson.model.*
import javax.mail.internet.InternetAddress //设置发送邮件的用户名密码
def username="project1@email.com"
def password="" //写入发送邮件的用户名密码到全局配置上,同时也可以设置smtp server这些选项;这里由于我采用统一的邮箱服务商,所以只需设置两项
def descriptor1 = Jenkins.instance.getDescriptorByType(hudson.plugins.emailext.ExtendedEmailPublisherDescriptor.class)
descriptor1.setSmtpAuthUsername(username)
descriptor1.setSmtpAuthPassword(password)
descriptor1.save() //写入系统管理员邮件地址到全局配置上
def descriptor2 = Jenkins.instance.getDescriptorByType(hudson.tasks.Mailer.DescriptorImpl.class)
descriptor2.setAdminAddress(String.format("JenkinsJobEmail <%s>",username))
descriptor2.save() //经过测试,这个是临时设置发送人的系统管理员邮件地址,不然上面设置后,发送时还是不会发生改变
def email = new InternetAddress(String.format("JenkinsJobEmail <%s>", username))
msg.setFrom(email)

4、开发邮件转发中间件(开发比较复杂,不建议使用)

每个Job发送到对应的邮箱,然后中间件负责转发到成员列表的邮箱。

中间件可以是服务,进程,或者用pythone写一个进程,运行在linux上,通过时间间隔获取指定邮箱的邮件,有新邮件时,再进行转发的特定的邮箱列表。

Jenkins邮件配置,实现邮件发送策略(可实现每个Job对应不同的发送邮箱)的更多相关文章

  1. jenkins邮件配置以及邮件添加附件详解

    1.在系统管理-系统设置  中找到邮件配置模块 填写情况如下图 第一步,填写系统管理员邮箱 第二步,填写邮箱配置 第三步,然后在项目中添加邮箱配置 项目中邮件设置中关于附件添加 因为我的项目目录中分3 ...

  2. jekins构建通知邮件配置及邮件附件设置,jenkins构建通知邮件没有RF的log和report文件

    全局配置: 系统管理-系统设置-Extended E-mail Notification (本邮件是程序自动下发的,请勿回复!)<br/><br/>项目名称:$PROJECT_ ...

  3. Ubuntu Linux自动发邮件配置及邮件发送脚本

    测试环境:Ubuntu 11.10 1. 安装mutt及msmtp软件 sudo apt-get install mutt sudo apt-get install msmtp 2. 编辑配置文件vi ...

  4. Jenkins之发送html附件邮件配置

    邮件配置: 邮件内容范例: ${FILE,path="C:\\Users\\Administrator\\.jenkins\\workspace\\XXX自动化测试工程目录\\$JOB_BA ...

  5. Jenkins中的邮件配置

    摘自http://blog.csdn.net/fullbug/article/details/53024562 Jenkins是一个很受欢迎的CI持续集成工具,能够实现项目的自动构建.打包.测试.发布 ...

  6. 第三章 持续集成jenkins工具使用之邮件配置

    1   Email Extension Plugin插件安装 持续集成很重要的一环就是及时将构建结果通知到对应的责任人,如:构建失败了,至少需要下发通知给造成本次构建失败的开发人员,如果包含自动化测试 ...

  7. SQL Server代理(4/12):配置数据库邮件

    SQL Server代理是所有实时数据库的核心.代理有很多不明显的用法,因此系统的知识,对于开发人员还是DBA都是有用的.这系列文章会通俗介绍它的很多用法. 在以前的文章里我们看到,SQL Serve ...

  8. 第四篇 SQL Server代理配置数据库邮件

    本篇文章是SQL Server代理系列的第四篇,详细内容请参考原文. 正如这一系列的前几篇所述,SQL Server代理作业是由一系列的作业步骤组成,每个步骤由一个独立的类型去执行.SQL Serve ...

  9. Jenkins系列之四——设置邮件通知

    Jenkins持续集成,当我们自动打包部署完,我们可以发送一封邮件给相关的负责人.现介绍一下如何在Jenkins中配置实现邮件通知. 在Jenkins中配置实现邮件通知,Jenkins提供了两种方式的 ...

  10. 【译】第四篇 SQL Server代理配置数据库邮件

    本篇文章是SQL Server代理系列的第四篇,详细内容请参考原文. 正如这一系列的前几篇所述,SQL Server代理作业是由一系列的作业步骤组成,每个步骤由一个独立的类型去执行.SQL Serve ...

随机推荐

  1. [转]Linux日志文件总管——logrotate

    FROM : https://linux.cn/article-4126-1.html 日志文件包含了关于系统中发生的事件的有用信息,在排障过程中或者系统性能分析时经常被用到.对于忙碌的服务器,日志文 ...

  2. tomcat配置文件详解

    Tomcat系列之服务器的安装与配置以及各组件详解   tomcat 配置文件详解

  3. react native中的欢迎页(解决首加载白屏)

    参照网页: http://blog.csdn.net/fengyuzhengfan/article/details/52712829 首先是在原生中写一些方法,然后通过react native中js去 ...

  4. 全球第一本基于Bootstrap V3.x的图书《深入理解Bootstrap》终于上市了,再次免费送书15本【活动结束】

    先说活动规则,再说书的事 经过将近1年的努力,终于有了第一本自己独立编写的书:<深入理解Bootstrap>,基于最新版V 3.1 ,侧重于源码详解.架构分析.插件扩展(全新开发)实战.为 ...

  5. QT5 动态链接库的创建和使用

    记录一下QT5 动态链接库的创建和使用 在文章的最后有完成的代码供下载 1.创建动态链接库 先新建一个库项目 选择chose进入下一下页面,类型选择共享库,输入一个名称:我输入的是sld 再点击下一步 ...

  6. python2.1-原理之琐碎技巧

    本系列依据<python学习手册第四版>而写,也算是个学习笔记吧,选择本书的原因在于它不同于第三版,它强调介绍python3.0 ,而会在不同的地方给出2.6版本的区别,:本书侧重介绍原理 ...

  7. PHP 对于 MYSQL 基础操作

    基础 <?php // 不打印 notice info // error_reporting(0); // 连接 mysql $con = mysql_connect("localho ...

  8. .NET程序迁移到Mysql的极简方案——让GGTalk同时支持Sqlserver与mysql全程记录!

    园子里的这个GGTalk,咱们前前后后用它移花接木做的IM项目也不下三四个了.初次入手的时候,洋洋代码,多少感觉有些难以把握.不过一来二去,理清了头绪,也就一览无余了.相信跟我们一样想要利用GGTal ...

  9. 开源 XFControls , 用于 Xamarin.Forms 的自定义控件集

    从此以后不会在博客园上发表任何言论,观注我的同志们,洗洗睡吧. ---------------------- 博文移至: http://www.jianshu.com/p/3ed1a3f10955

  10. 完整的社交app源码android+laravel

    等想到写点什么的时候再写吧,其他看代码. https://github.com/huijimuhe/monolog-android https://github.com/huijimuhe/monol ...