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.
slms/docs/EMAIL_TEST.md

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)

测试配置

  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: 多个收件人格式错误

错误格式:

to: '602924803@qq.com, 1280568951@qq.com'  // 有空格

正确格式(尝试):

to: '602924803@qq.com,1280568951@qq.com'  // 无空格

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

运行以下脚本:

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 邮件调试日志:

  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 邮箱作为发件人(更稳定)