Jenkins实现自动化邮件发送踩坑记录

时间:2022-07-23
本文章向大家介绍Jenkins实现自动化邮件发送踩坑记录,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

文章简介

本文分享Jenkins实现邮件发送,就不演示如何安装,如果需要查看,可点击底部阅读原文,分享Jenkins多种安装方式。写这篇文章,是在实际使用Jenkins过程中遇到这样一个问题,当每次Jenkins构建成功或者失败后,需要个人登录Jenkins查看构建结果,同时在构建前做了数据备份,也需要手动的拷贝一份备份文件到本地。为了解决这个问题,便想到了Jenkins的邮件功能。在个人实践中,在每次master分支自动构建前,需要将数据库和代码打包、备份,在Jenkins构建结束之后,将备份的文件发送给对应的负责人。

文章部分细节的地方可能省略带过,因此需要对Jenkins有一定使用的用户比较合适,如果不熟悉的,可以参考上面提交的文章。文章涉及到不准确的信息还望反馈。

大致逻辑

接下来整个流程,也都按照该流程进行演示如何配置。

安装插件

首先点击管理,然后点击插件管理,跳转到插件中心。

如果没有安装过email对应的插件,点击可选插件按钮,然后输入email关键词,进行搜索即可。这里我已经安装过了,为了演示选择已安装菜单。

在安装插件的过程中,需要注意一个版本号。2.73版本的插件有一个bug,就是配置正确却不能发送邮件。建议避开这个版本号。

系统配置

安装好插件之后,接下来就需要进入系统配置。进入系统配置,主要配置两个地方,一个是管理员的邮箱地址,一个是插件的配置信息。

记住插件发送邮件的账号一定的和管理员的邮箱账号一致,否者会出现下面错误信息。

错误信息:

com.sun.mail.smtp.SMTPSenderFailedException: 553 Mail from must equal authorized user
at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:1587)
Caused: com.sun.mail.smtp.SMTPSendFailedException: 553 Mail from must equal authorized user;
  nested exception is:
    com.sun.mail.smtp.SMTPSenderFailedException: 553 Mail from must equal authorized 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:581)
    at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627)

错误信息的大致意思就是说,邮箱的授权用户(插件配置的账号)和from(邮件发送者)账号不一致。

这里其实有点小困惑,邮件配置授权账户,为什么管理员的邮件账号还必须保持一致。按理来说,既然配置了授权用户,就采用配置的授权邮箱进行发送呗。可能是系统使用的管理员邮件发送。这里的配置授权仅仅是为了授权第三方邮箱账户吧。

项目配置

接下来,我们创建一个任务测试发送邮件。至于具体的配置这里省略带过,直接记录配置邮件的地方。

这里面就是针对该项目的具体配置信息,上面我们提交到系统配置,属于全局配置。如果这里没有配置,则默认走全局配置。大致的配置信息和全局配置都是相同的作用,可以根据不同的任务,自行配置即可。

邮件测试

最后配置完毕,当提交代码待仓库后,使用webhooks自动触发构建,登录邮箱就可以查看到下面的一些构建基础信息了。如果邮件需要更多的配置信息,直接到任务中去配置即可。