jenkins配置邮件报错: authentication failed

问题: 配置jenkins自动发送邮件, 测试邮件发送的时候一致报错,如下:

Failed to send out e-mail

javax.mail.AuthenticationFailedException: 535 Error: authentication failed

at com.sun.mail.smtp.SMTPTransport$Authenticator.authenticate(SMTPTransport.java:809)
at com.sun.mail.smtp.SMTPTransport.authenticate(SMTPTransport.java:752)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:669)
at javax.mail.Service.connect(Service.java:317)
at javax.mail.Service.connect(Service.java:176)
at javax.mail.Service.connect(Service.java:125)
at javax.mail.Transport.send0(Transport.java:194)
at javax.mail.Transport.send(Transport.java:124)
at hudson.tasks.Mailer$DescriptorImpl.doSendTestMail(Mailer.java:581)
at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627)
at org.kohsuke.stapler.Function$MethodFunction.invoke(Function.java:343)

条件: 我的jenkins配置如下:

jenkins -> 系统管理 -> 系统设置

第一部分:

Jenkins Location
 Jenkins URLHelp for feature: Jenkins URL
 
 
   
 系统管理员邮件地址Help for feature: 系统管理员邮件地址

第二部分:


  
邮件通知
 SMTP服务器Help for feature: SMTP服务器
 
 
   
 用户默认邮件后缀Help for feature: 用户默认邮件后缀
 
 
   
    
Help for feature: 使用SMTP认证
   
 用户名 
   
 密码 
   
 使用SSL协议Help for feature: 使用SSL协议
   
   
 SMTP端口Help for feature: SMTP端口
   
   
 Reply-To Address 
   
 字符集 
   
 
 Test e-mail recipient 
   
  


注: 密码输入的是邮箱的登陆密码

猜测:更换为公司的邮箱就可以测试成功了,因此判定问题出在邮箱本身上,参照一下链接,猜测可能是用户名,密码的问题;以及记忆中似乎邮箱有个其他的密码,因此返回邮箱本身进行寻找

http://blog.youkuaiyun.com/huochen1994/article/details/51282093


验证:

1> 登陆163邮箱反复查找,查到以下位置



2> 163邮箱使用第三方邮件客户端(非163 web app:例如jenkins)登陆邮箱的时候,需要输入的passwd是授权码,不是登陆码;

3> 点击重置授权码 -> 邮箱发送重置授权码验证 -> 重置授权码,并记住授权码

4> jenkins中的passwd改为授权码则测试邮件发送成功

 
 Test e-mail recipient 
   
  
Email was successfully sent


后:据此扩展搜索了仅有authentication failed关键字的问题,找到了邮件设置授权码的详细介绍

https://www.zhihu.com/question/32009096/answer/72465824

http://blog.youkuaiyun.com/lk_blog/article/details/49536435

http://blog.youkuaiyun.com/u012661010/article/details/71946312     #自动化测试添加邮件发送

 

### 云效构建时出现401 Unauthorized问题的原因分析 在云效构建过程中,如果遇到 `401 Unauthorized` 错误,通常表示客户端未能提供有效的身份验证信息或权限不足。以下是可能原因及其对应的解决方案: #### 可能原因一:凭证配置错误 当向远程仓库(如Nexus或其他私有库)推送文件时,如果没有正确设置用户名和密码/Token,则可能导致此错误。例如,在 Jenkins 中发布 jar 包至 Nexus 出现类似的 Return code is: 401, ReasonPhrase: Unauthorized 的情况[^1]。 ##### 解决方法 确保 Maven 或 Gradle 配置中的认证信息无误。对于 Maven 用户来说,需检查 `${HOME}/.m2/settings.xml` 文件内的 `<servers>` 节点是否有正确的凭据定义: ```xml <servers> <server> <id>nexus-releases</id> <!-- 对应于pom.xml中<distributionManagement><repository><id></id> --> <username>your-username</username> <password>your-password-or-token</password> </server> </servers> ``` #### 可能原因二:API Token 过期或者无效 某些情况下,即使提供了正确的用户名和密码组合,仍会收到未授权响应。这可能是由于 API token 已经过期或者是非法状态引起的。比如 OpenStack CLI 报错 HTTP 401 Unauthorized 提示用户提供的证书不被认可[^2]。 ##### 解决方法 重新生成新的有效令牌并更新到工具链里去。如果是通过环境变量传递的身份参数也需要同步修改成最新的值。 #### 可能原因三:网络代理干扰请求头数据传输过程 部分企业内部部署的服务可能会强制启用 HTTPS 协议并通过特定端口监听外部连接尝试;然而这些额外的安全措施有时会造成意外后果——即原本应该附加上的 Authorization 字段丢失掉从而引发上述异常状况发生。 ##### 解决方法 确认是否存在任何中间件拦截机制影响到了实际发送出去的数据包内容结构形式,并调整相应策略允许正常携带所需元数据完成整个流程操作执行动作。 --- ### 示例代码片段展示如何处理Maven项目上传失败的情况 下面给出一段简单的 Java 程序用来演示怎样捕获此类异常事件以便进一步排查定位具体位置所在之处。 ```java try { // 执行 maven deploy 命令逻辑... } catch (Exception e) { if ("Unauthorized".equalsIgnoreCase(e.getMessage())) { System.err.println("Authentication failed! Please check your credentials."); } else { throw e; // Re-throw other exceptions as-is. } } ``` --- ### 总结 综上所述,针对云效平台上发生的 401 unauthorized error ,可以从以下几个方面入手解决问题:一是核实账号基本信息准确性;二是考虑更换最新版可用密钥替代旧版本继续沿用下去;三是排除周边配套设施所带来的副作用因素作用效果。只有全面细致地逐一检验各个环节才能最终找到症结所在进而彻底消除隐患风险。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值