SonarQube+jenkins(三):SonarQube+jenkins生成pdf报告脚本发送至邮箱+邮箱使用

一、安装mailx

# Centos,安装 mailx
$ yum install -y mailx
# 查看帮助
$ mail --h

二、解决SSL证书

不安装会报错“Error in certificate: Peer’s certificate issuer is not recognized

 # 生成证书
 #qq的话把ali.crt替换成qq.crt
 $ mkdir ~/.certs
 $ echo -n | openssl s_client -connect smtp.mxhichina.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ~/.certs/ali.crt
 $ certutil -A -n "GeoTrust SSL CA" -t "C,," -d ~/.certs -i ~/.certs/ali.crt
 $ certutil -A -n "GeoTrust Global CA" -t "C,," -d ~/.certs -i ~/.certs/ali.crt
 
 # 查看证书权限
 $ cd ~/.certs && ll
 总用量 80
-rw-r--r-- 1 root root  2277 4月  19 10:47 ali.crt
-rw------- 1 root root 65536 4月  19 10:56 cert8.db
-rw------- 1 root root 16384 4月  19 10:56 key3.db
-rw------- 1 root root 16384 4月  19 10:48 secmod.db

# 验证,显示如下信息表示 SSL 证书配置生成及安装完成 
$ certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ./ -i ali.crt
Notice: Trust flag u is set automatically if the private key is present.

生成完成之后,需要在 /etc/mail.rc 配置文件中,修改 nss-config-dir 为上面命令生成的目录 ~/.certs。

三、配置邮箱信息

 # 配置邮箱参数,文件末尾添加以下内容
 $ vi /etc/mail.rc
# ssl 校验设置,配置 SSL 证书就可以注释掉
 # 邮箱账户,对方收到邮件时显示的发件人
set from=*****@qq.com
//这是QQ邮箱的stmp地址,阿里云邮箱为:smtps://smtp.mxhichina.com:465
set smtp=smtp.qq.com
#邮箱账户
set smtp-auth-user=1125*****
# 邮箱密码,部分邮箱(163、qq)为授权密码而非邮箱密码
set smtp-auth-password=xjvfwiwlie*****
 # smtp 认证方式。默认是 login
set smtp-auth=login
#如果用阿里邮箱,这个要注释掉,否则会报错 SSL/TLS handshake failed: SSL received a malformed Alert record.
set smtp-use-starttls
set ssl-verify=ignore
# 设置 nss 配置目录,上一步骤 SSL 证书目录
set nss-config-dir=/root/.certs

QQ邮箱生成授权密码教程:教程

四、使用

# 发送邮件
$ echo "邮件内容" | mail -s "邮件标题" [email protected]
# 发送邮件,添加抄送人及附件
echo "邮件内容,请查收" | mail -v -c "**@163.com,**@qq.com" -s "邮件标题" -a **.zip **@163.com

-s <邮件主题>:指定邮件的主题;
-c <地址>:指定抄送人,多个收件人之间用逗号分隔;
-b <地址>:指定密送人,多个收件人之间用逗号分隔;
-a:参数后面跟的文件,将作为附件发送出去;
-v:执行时,显示详细的信息。

五、Sonarqube+jenkins生成pdf报告脚本发送至邮箱

1.在jenkins的构建中添加脚本

在这里插入图片描述
2.脚本信息

export LANG="zh_CN.UTF-8"
export LC_ALL="zh_CN.UTF-8"
//项目名称
sonar_url=tian

//收件方地址,还可以添加
send1=**@qq.com
send2=**@qq.com
rm -f ${JOB_NAME}.pdf 
wget http://sonarqube的ip地址:9000/api/pdfreport/get?componentKey=${sonar_url} -O ${JOB_NAME}.pdf

#邮件需要包含的内容写入临时文件
echo "${JOB_NAME}-第${BUILD_NUMBER}次代码扫描报告" > mail.txt
echo "项目名称 : ${JOB_NAME}" >> mail.txt
echo "构建编号 : 第${BUILD_NUMBER}次构建" >> mail.txt
echo "代码路径 : ${SVN_URL}" >> mail.txt
echo "构建日志 : ${BUILD_URL}consoleText" >> mail.txt
echo "构建Url : ${JOB_URL}" >> mail.txt
echo "工作目录 : ${WORKSPACE}" >> mail.txt
cat mail.txt  ${WORKSPACE}/*.pdf | mail -s "title"  ${send1},${send2}

然后构建即可,亲测能发送
如果以上能用,但是发送的附件名字为tcmime.*.bin,我测试了一上午的文件,都是bin文件,并且打不开
在这里插入图片描述
将脚本最后一句话改一下:

cat mail.txt  | mail -s "sonarQube report"(标题) -a  ${WORKSPACE}/*.pdf ${send1}

参考博客:https://cloud.tencent.com/developer/article/1624890

猜你喜欢

转载自blog.csdn.net/weixin_43909848/article/details/107109895