# 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) ``` #### 测试配置 1. 滚动到 **Extended E-mail Notification** 部分 2. 点击 **Advanced** 按钮 3. 找到 **Test configuration by sending test e-mail** 4. 输入测试邮箱:`602924803@qq.com` 5. 点击 **Test configuration** 6. 查看是否收到测试邮件 ### 2. 检查构建日志 访问最近一次失败的构建: `http://localhost:8084/job/slms/lastBuild/console` **搜索关键词:** ``` 发送失败通知邮件 准备发送失败通知邮件到 失败通知邮件已发送 邮件发送失败 ``` **如果看到错误信息,记录下来** ### 3. 常见问题 #### 问题 1: 多个收件人格式错误 **错误格式:** ```groovy to: '602924803@qq.com, 1280568951@qq.com' // 有空格 ``` **正确格式(尝试):** ```groovy to: '602924803@qq.com,1280568951@qq.com' // 无空格 ``` 或 ```groovy to: '602924803@qq.com;1280568951@qq.com' // 分号分隔 ``` #### 问题 2: 邮件插件未正确配置 **检查插件:** 1. 访问:`http://localhost:8084/pluginManager/installed` 2. 搜索:`Email Extension` 3. 确认已安装且已启用 #### 问题 3: SMTP 认证失败 **可能原因:** - 学校邮箱密码错误 - 学校邮箱未开启 SMTP 服务 - 学校邮箱需要特殊配置 **解决方案:** 联系学校 IT 部门确认: - SMTP 服务器地址 - SMTP 端口 - 是否需要 SSL/TLS - 是否需要特殊授权 #### 问题 4: 邮件被拦截 **检查:** - QQ 邮箱的垃圾邮件文件夹 - QQ 邮箱的设置 → 反垃圾 - 将 ldl@chzu.edu.cn 加入白名单 ### 4. 手动测试邮件 #### 方法 1: Jenkins Script Console 访问:`http://localhost:8084/script` 运行以下脚本: ```groovy 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: 触发一次失败构建 修改代码让构建失败,测试失败邮件: ```bash # 创建一个会失败的提交 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 修改:** ```groovy from: '602924803@qq.com', to: '602924803@qq.com, 1280568951@qq.com', replyTo: 'ldl@chzu.edu.cn', ``` ### 6. 调试日志 启用 Jenkins 邮件调试日志: 1. 访问:`http://localhost:8084/log/` 2. 点击 **Add new log recorder** 3. 名称:`Email Debug` 4. 添加 Logger: - `hudson.plugins.emailext` → Level: `ALL` - `javax.mail` → Level: `ALL` 5. 保存 6. 触发构建 7. 查看日志:`http://localhost:8084/log/Email%20Debug/` ## 快速检查清单 - [ ] Jenkins 邮件插件已安装 - [ ] SMTP 服务器配置正确 - [ ] SMTP 认证信息正确 - [ ] 测试邮件能发送成功 - [ ] 收件人邮箱地址正确 - [ ] 邮件没有进入垃圾箱 - [ ] Jenkins 构建日志中有邮件发送记录 - [ ] 没有邮件发送错误信息 ## 下一步 1. 先用 Jenkins 的测试功能发送测试邮件 2. 如果测试邮件成功,检查构建日志 3. 如果测试邮件失败,检查 SMTP 配置 4. 考虑使用 QQ 邮箱作为发件人(更稳定)