You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
5.2 KiB
5.2 KiB
Jenkins 邮件通知测试
当前配置
发件人: ldl@chzu.edu.cn 收件人: 602924803@qq.com, 1280568951@qq.com
测试步骤
1. 检查 Jenkins 邮件配置
访问:http://localhost:8084/configure
Extended E-mail Notification 配置检查
SMTP server: smtp.chzu.edu.cn (或其他)
SMTP port: 465 或 587
Use SMTP Authentication: ✅
User Name: ldl@chzu.edu.cn
Password: ******** (邮箱密码或授权码)
Use SSL: ✅ (如果端口是 465)
Use TLS: ✅ (如果端口是 587)
测试配置
- 滚动到 Extended E-mail Notification 部分
- 点击 Advanced 按钮
- 找到 Test configuration by sending test e-mail
- 输入测试邮箱:
602924803@qq.com - 点击 Test configuration
- 查看是否收到测试邮件
2. 检查构建日志
访问最近一次失败的构建:
http://localhost:8084/job/slms/lastBuild/console
搜索关键词:
发送失败通知邮件
准备发送失败通知邮件到
失败通知邮件已发送
邮件发送失败
如果看到错误信息,记录下来
3. 常见问题
问题 1: 多个收件人格式错误
错误格式:
to: '602924803@qq.com, 1280568951@qq.com' // 有空格
正确格式(尝试):
to: '602924803@qq.com,1280568951@qq.com' // 无空格
或
to: '602924803@qq.com;1280568951@qq.com' // 分号分隔
问题 2: 邮件插件未正确配置
检查插件:
- 访问:
http://localhost:8084/pluginManager/installed - 搜索:
Email Extension - 确认已安装且已启用
问题 3: SMTP 认证失败
可能原因:
- 学校邮箱密码错误
- 学校邮箱未开启 SMTP 服务
- 学校邮箱需要特殊配置
解决方案: 联系学校 IT 部门确认:
- SMTP 服务器地址
- SMTP 端口
- 是否需要 SSL/TLS
- 是否需要特殊授权
问题 4: 邮件被拦截
检查:
- QQ 邮箱的垃圾邮件文件夹
- QQ 邮箱的设置 → 反垃圾
- 将 ldl@chzu.edu.cn 加入白名单
4. 手动测试邮件
方法 1: Jenkins Script Console
访问:http://localhost:8084/script
运行以下脚本:
import hudson.plugins.emailext.ExtendedEmailPublisher
import hudson.model.User
def emailext = Jenkins.instance.getDescriptorByType(hudson.plugins.emailext.ExtendedEmailPublisher.DescriptorImpl.class)
// 测试邮件配置
def props = new Properties()
props.put("mail.smtp.host", emailext.smtpServer)
props.put("mail.smtp.port", emailext.smtpPort)
props.put("mail.smtp.auth", "true")
props.put("mail.smtp.ssl.enable", emailext.useSsl ? "true" : "false")
props.put("mail.smtp.starttls.enable", emailext.useTls ? "true" : "false")
println "SMTP Server: ${emailext.smtpServer}"
println "SMTP Port: ${emailext.smtpPort}"
println "Use SSL: ${emailext.useSsl}"
println "Use TLS: ${emailext.useTls}"
println "SMTP Username: ${emailext.smtpUsername}"
// 发送测试邮件
import javax.mail.*
import javax.mail.internet.*
def session = Session.getInstance(props, new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(emailext.smtpUsername, emailext.smtpPassword)
}
})
try {
def message = new MimeMessage(session)
message.setFrom(new InternetAddress("ldl@chzu.edu.cn"))
message.addRecipient(Message.RecipientType.TO, new InternetAddress("602924803@qq.com"))
message.addRecipient(Message.RecipientType.TO, new InternetAddress("1280568951@qq.com"))
message.setSubject("Jenkins 邮件测试")
message.setText("这是一封测试邮件,用于验证 Jenkins 邮件配置。")
Transport.send(message)
println "✓ 邮件发送成功!"
} catch (Exception e) {
println "✗ 邮件发送失败: ${e.message}"
e.printStackTrace()
}
方法 2: 触发一次失败构建
修改代码让构建失败,测试失败邮件:
# 创建一个会失败的提交
echo "test error" > test-error.txt
git add test-error.txt
git commit -m "test: 测试失败邮件通知"
git push
5. 替代方案
如果学校邮箱配置复杂,可以临时使用 QQ 邮箱发送:
Jenkins 配置:
SMTP server: smtp.qq.com
SMTP port: 465
User Name: 602924803@qq.com
Password: QQ邮箱授权码
Use SSL: ✅
Jenkinsfile 修改:
from: '602924803@qq.com',
to: '602924803@qq.com, 1280568951@qq.com',
replyTo: 'ldl@chzu.edu.cn',
6. 调试日志
启用 Jenkins 邮件调试日志:
- 访问:
http://localhost:8084/log/ - 点击 Add new log recorder
- 名称:
Email Debug - 添加 Logger:
hudson.plugins.emailext→ Level:ALLjavax.mail→ Level:ALL
- 保存
- 触发构建
- 查看日志:
http://localhost:8084/log/Email%20Debug/
快速检查清单
- Jenkins 邮件插件已安装
- SMTP 服务器配置正确
- SMTP 认证信息正确
- 测试邮件能发送成功
- 收件人邮箱地址正确
- 邮件没有进入垃圾箱
- Jenkins 构建日志中有邮件发送记录
- 没有邮件发送错误信息
下一步
- 先用 Jenkins 的测试功能发送测试邮件
- 如果测试邮件成功,检查构建日志
- 如果测试邮件失败,检查 SMTP 配置
- 考虑使用 QQ 邮箱作为发件人(更稳定)