Jenkins Email Extension插件SMTP凭据配置异常求助
问题详情
- 环境:Jenkins 2.426.3,Email Extension插件从2.104升级至2.105
- 核心现象:Jenkins内置的标准邮件功能可正常发送,说明SMTP服务及凭据本身无问题;但Email Extension插件无论在配置中选择哪项凭据,发送邮件时均触发认证失败
- 已尝试的排查操作:
- 创建全局范围、系统范围的凭据
- 更新插件至最新版本2.105
- 删除并重建目标凭据
- 查看INFO级别日志,无相关报错记录
插件调试日志如下:
Successfully created MimeMessage Sending email to: xxx@example.com yyy@example.com DEBUG: getProvider() returning jakarta.mail.Provider[TRANSPORT,smtp,org.eclipse.angus.mail.smtp.SMTPTransport,Oracle] DEBUG SMTP: need username and password for authentication DEBUG SMTP: protocolConnect returning false, host=smtp.example.com, user=jenkins, password=<null> AuthenticationFailedException message: failed to connect, no password specified?
注意:实际凭据设置的用户名并非jenkins,且已配置有效密码。
解决思路
确认插件SMTP认证配置开关
进入Email Extension插件的配置页面,检查是否勾选了Use SMTP Authentication选项。部分场景下插件可能未自动继承全局邮件的认证配置,需手动开启该开关并重新选择凭据。验证凭据类型正确性
确保使用的是Username with password类型的凭据,而非Secret text等单一字段类型。Email Extension插件需要同时读取用户名和密码,错误的凭据类型会导致插件 fallback 到默认的jenkins用户名且无法获取密码。开启更详细的DEBUG日志排查
在Manage Jenkins > System Log > Log Levels中,添加javax.mail和hudson.plugins.emailext两个日志项并设置为DEBUG级别,查看凭据加载的完整流程,确认插件是否正确读取了目标凭据的用户名和密码。测试插件与Jenkins版本兼容性
尽管已升级插件,但2.426.3是较新的Jenkins LTS版本,可尝试回退至Email Extension插件的2.103版本(若之前可用),或查看插件更新日志是否存在SMTP凭据读取相关的修复记录。临时直接填写SMTP账号信息测试
暂时绕过凭据,在插件配置中直接填写SMTP用户名和密码(注意安全风险,测试后及时改回凭据方式)。若此方式能正常发送邮件,说明问题出在凭据读取环节,可能是权限配置或插件bug导致。检查凭据权限范围
确认目标凭据的权限范围设置为System (Jenkins and nodes can access this),确保Jenkins系统用户具备读取该凭据的权限,过窄的权限范围会导致插件无法调取凭据内容。
内容的提问来源于stack exchange,提问作者dodo

