邮箱不可用 550 User has no permission(JavaMail登不进邮件系统)

本文解决使用Java发送邮件时遇到的550Userhasnopermission错误。新注册的163邮箱默认关闭客户端授权,需在邮箱中心开启客户端授权密码功能,并使用授权码代替密码进行第三方服务登录。

当传入发送邮箱正确的用户名和密码时,总是收到到:550 User has no permission这样的错误,

其实我们用Java发送邮件时相当于自定义客户端根据用户名和密码进行登录,然后使用SMTP服务发送邮件。但新注册的163邮件默认是不开启客户端授权验证的(对自定的邮箱大师客户端默认开启),

因此登录总是会被拒绝,验证没有权限。解决办法是进入163邮箱,进入邮箱中心——客户端授权密码,选择开启即可,如下截图

另外,开启这个客户端授权码后:

电脑和手机还是原来的账号密码登陆,但第三方比如用Java、python等做的POP3/SMTP等服务登陆时——账号还是填账号(@的前缀部分),但密码要填授权码

至此问题解决。

### 解决 `javax.mail.AuthenticationFailedException` 550 用户无权限问题 当遇到 `javax.mail.AuthenticationFailedException: 550 User not permitted` 错误时,通常是因为应用程序尝试通过 SMTP 发送电子邮件时未能成功验证用户的凭证或权限设置当。以下是几种可能的解决方案: #### 配置安全连接 某些邮件服务器强制要求使用加密的安全连接来提高安全性。如果收到错误提示表明需要 SSL 或 TLS 连接,则应确保 JavaMail 的会话对象已正确配置以支持这些协议。 ```java Properties props = new Properties(); props.put("mail.smtp.host", "smtp.example.com"); // 启用SSL/TLS props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); props.put("mail.smtp.auth", "true"); Session session = Session.getInstance(props, new javax.mail.Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username, password); } }); ``` 对于 QQ 邮箱而言,官方文档指出必须建立一个安全连接才能正常工作[^1]。 #### 授权应用访问 部分邮箱服务提供商为了保护用户账号,默认情况下允许低安全性应用程序直接录并发送邮件。针对这种情况,可以考虑如下操作: - **启用对较安全的应用的支持**:前往目标邮箱服务商提供的管理页面开启允许较低安全级别的程序访问的功能选项;例如,在 Gmail 中可以通过调整账户设置中的“允许够安全的应用”开关实现这一点[^5]。 - **创建专用的应用密码**:一些平台提供了一种机制让用户生成特定于某个应用的身份验证令牌而是共享主帐户密码给第三方软件。这仅增强了整体系统的防护能力而且便于追踪具体哪个组件触发了此次认证请求失败事件。 #### 修改代码逻辑处理方式 考虑到敏感数据泄露风险以及维护便利性的因素,建议将诸如用户名、密码之类的私密参数存储在一个外部化的配置文件里而非硬编码到源码之中[^4]。 另外值得注意的是,像新浪这样的国内主流电子信箱可能会因为政策原因而有同的解决路径[^2]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值