前言:

首先,要有一个用来发送的邮箱,首选网易!参考: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="123456"//写入发送邮件的用户名密码到全局配置上,同时也可以设置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上,通过时间间隔获取指定邮箱的邮件,有新邮件时,再进行转发的特定的邮箱列表。

转载于:https://www.cnblogs.com/EasonJim/p/6068002.html

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

  1. jenkins邮件配置和邮件发送

    1.在Manage Jenkins中选择插件管理 2.在可选插件中搜索email,选择Email Extension安装 3.安装完成后,需要进行后续的配置工作 (1)进入Manage Jenkins ...

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

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

  3. mysql配置数据库邮件_SqlServer2008怎么配置数据库邮件?

    SqlServer2008是一款功能非常强大的数据库平台软件,SqlServer2008可以提供非常安全的数据库服务器和数据管理,那么,SqlServer2008怎么配置数据库邮件呢?下面就是如何在S ...

  4. kafka中副本数据同步策略 ,acknowledge的发送策略,kafka的数据可靠性保证

    ack(acknowledge)简介 为保证producer发送的数据,能可靠的发送到指定的topic,topic的每个partition收到producer发送的消息后,都需要向producer发送 ...

  5. Jenkins学习四:Jenkins 邮件配置

    本文主要对Windows环境 jenkins 的邮件通知进行介绍 jenkins 内置的邮件功能 使用email-ext插件扩展的邮件功能 邮件通知功能主要包含两个部分:全局配置和项目配置. 一. 先 ...

  6. jenkins linux 发邮件,jenkins——邮件配置

    Jenkins配置邮件 – 内置邮件 系统管理 -> 系统设置 -> Jenkins Location 先设置系统管理员邮件地址,这里的邮件地址需要和后续要设置的发邮件地址一致. 往下拉, ...

  7. Jenkins详细邮件配置

    Jenkins邮件配置 新建一个自由风格的软件项目 添加构建,配置如图所示: 注:这里以一个执行postman接口测试命令为例 命令如下 @echo off echo 接口测试开始执行 newman ...

  8. Jenkins安装以及邮件配置

    Jenkins介绍 Jenkins是一个java开发的.开源的.非常好用持续集成的工具,它能帮我们实现自动化部署环境.测试.打包等等的工作,还可以在构建任务成功或者失败之后给我们发邮件通知. 什么叫持 ...

  9. jenkins 邮件配置展示change信息

    Jenkins进阶系列之 2014-11-10  bananarli...  摘自 csdn博客  阅 10692  转 58 转藏到我的图书馆 微信分享: 1 简述 众所周知,Jenkins默认提供 ...

最新文章

  1. maven学习(下)利用Profile构建不同环境的部署包
  2. java学习笔记2021.1.10
  3. 微型计算机组装实验报告虚拟,计算机硬件的组装实验报告.doc
  4. MachineLearning(10)-聚类
  5. pyecharts对于经纬度_一文带你掌握Pyecharts地理数据可视化的方法
  6. PHP使用指南,PHP使用指南-cookies部分
  7. 最新的Sql笔试题及答案,部门表,用户表,客户信息表,订单表
  8. 系统服务图形化安装卸载工具SRVINSTW汉化版
  9. 挖掘机液压控制系统实训QY-JXSX09
  10. ant man 什么意思,ant
  11. 使用GPG加密通讯,设置git提交验证密钥
  12. 关于sockaddr_in 、WSAData 、sockaddr等未定义的问题
  13. list容量限制测试
  14. java官网教程(进阶篇)—— 集合
  15. C4996:#(The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name:)
  16. 风起看云涌,叶落品人生 - Google 搜索
  17. 7.6 Python 实例12-政府工作报告词云
  18. polished_project 源码分析 知识点总结
  19. adonis-rest - 基于AdonisJs的Restful API基础构件
  20. 鼎捷t100架构_鼎捷T100发布 打造“互联网+制造”企业智能互联云平台

热门文章

  1. C# 学习笔记1 .NET平台,C#的重要概念
  2. ASP.NET中 Repeater嵌套
  3. how to find your partner
  4. index.html example demonstration
  5. 山东大学和哈工大的教师招聘条件对比,心里要有点数
  6. SFB 项目经验-57-Skype for business-录音系统-你拥有吗(模拟线路)
  7. 简单说说你对Java内存模型的原子性的了解吧?
  8. Java: for(;;) vs. while(true)
  9. dedecms调用当前栏目的子栏目怎么操作
  10. Android PendingIntent的使用