一、问题
jenkins做自动化测试生成测试报告后发送邮件,设置邮箱后,jenkins测试邮件发送成功,构建邮件发送失败
Not sent to the following valid addresses: 123@qq.com aaa@126.com
二、原因
发送邮件的设置需要设置多处:
1、Dashboard => Configure System => Manage Plugins
(1) Jenkins Location
系统管理员邮件地址: 123@qq.com
(2)Extended E-mail Notification
SMTP server: smtp.qq.com
Credentials 添加 (这里没有配置邮箱和邮箱授权码导致测试邮件发送成功,构建邮件发送失败)
Default user e-mail suffix: @qq.com
Default Content Type:HTML(text/html)
Default Recipients: 123@qq.com,aaa@126.com,freshmboy@163.com
Reply To List: 123@qq.com
(3)邮件通知
SMTP服务器: smtp.qq.com
用户默认邮件后缀: @qq.com
高级 => √使用SMTP认证 用户名:123@qq.com 密码:qq授权码
字符集: UTF-8
√通过发送测试邮件测试配置
Test e-mail recipient: aaa@126.com
Email was successfully sent
2、Dashboard => 任务名称 => 配置 => 构建后操作 => Editable Email Notification
Project Recipient List: 123@qq.com,aaa@126.com
Content Type: HTML(text/html)
Default Content:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次构建日志</title>
</head>
<body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4" offset="0"> <div>
<h2>项目信息</h2>
<ul>
<li>项目名称:${PROJECT_NAME}</li>
<li>详细测试报告:<a href="${PROJECT_URL}HTML_20Report/">${PROJECT_URL}HTML_20Report/</a></li> <li>触发原因:${CAUSE}</li>
<li>项目Url:<a href="${PROJECT_URL}">${PROJECT_URL}</a></li>
</ul>
<hr/>
<h2>构建日志</h2>
<div>${JELLY_SCRIPT,template="html"}</div>
<hr/>
</div>
</body>
</html>
三、解决方案
1、控制台输出邮件debug信息
在 jenkins > 设置 中 把 Extended E-mail Notification 中开启 Enable Debug Mode ,然后在构建中查看“控制台输出”时,就能看到邮件的debug信息。
2、查看debug信息
发送邮件 503 Error:
need EHLO and AUTH first !
报这个错的原因是邮箱登录需要设置安全码,切记安全码不是邮箱密码,是邮箱授权码。
Extended E-mail Notification => Credentials => 添加凭据(此处密码填写邮箱授权码)
看到其他有个回答,跟我的错误和处理方式相似:
用的QQ邮箱SMTP进行邮件发送,所有配置对了,SMPT开了,用的也是授权码,还是报错:535 Login Fail. Please enter your authorization code ,最终定位结果:把 jenkins>设置 中的 邮件通知 和 Extended E-mail Notification 的邮件发送信息设置成一致,就解决了。
关于授权码
1、登录进入qq邮箱 ;
2、 点击“设置” ;
3、 点击“账户” ;
4、下滑到“POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务”;
5、点击“生成授权码”;
6、短信验证,发送短信;
7、点击“我已发送”,复制生成的授权码,即可用于jenkins配置邮箱
注:除了qq外,163等其他邮箱也可以生成授权码,用于jenkins配置邮箱