使用163邮箱发送邮件出现553 authentication is required

引用博客园大佬恋在那时https://www.cnblogs.com/zfding/p/8324784.html

写在这里怕日后忘了再犯错误。

553 authentication is required:这个错误的意思是你必须需要认证。

也就是说,你连接smtp服务器的时候必须使用密码来连接:下面代码红色那句

代码:

@Override
    public void run() {
        try {
            log.info("邮件创建开始了。。。。");
            //1.创建session
            Session session = Session.getInstance(prop);
            //2.开启session的debug模式,可以查看出email发送的情况
            session.setDebug(true);
            //3.连接发件服务器
            Transport trans = session.getTransport();
            trans.connect(prop.getProperty("mail.host"),prop.getProperty("mail.name"), prop.getProperty("mail.password"));
            //4.创建邮件
            Message message = createMessageMail(session);
            //发送邮件
            trans.sendMessage(message, message.getAllRecipients());
            trans.close();
        } catch (Exception e) {
            log.error("创建邮件发生异常:异常为{}",e.toString());
            e.printStackTrace();
        }
    }

535 Error:authentication failed:这个错误就是认证失败!

相信很多的同学明明用户名和密码填的是对的,就是说认证失败!

我刚开始也是,我简直都要气的吐血了,明明什么都是对的,就是连接不上。事实上是就算你气的再厉害还是没用的

因为这里的密码不是你邮箱的密码,是你的授权码!!!

授权码和你邮箱的密码是不一样的,关于获取授权码大家可以登录到邮件的官网:看我的截图

好了,这里大家的邮件基本是都可以发送啦!

再次附上原版链接:恋在那时https://www.cnblogs.com/zfding/p/8324784.html

### Spring Security 文件上传身份验证解决方案 当尝试通过受保护的端点上传文件时,如果收到 `Full authentication is required to access this resource` 错误消息,则表明客户端未提供有效的认证凭证[^1]。 为了处理此问题并允许安全地执行文件上传操作,在应用程序配置中集成 Spring Security 是必要的措施之一。具体来说: #### 配置 Web 安全设置 确保已启用基本的安全机制来保护 RESTful API 接口免遭未经授权访问。可以通过自定义扩展 `WebSecurityConfigurerAdapter` 类实现这一点,并重写其方法以适应特定需求[^2]。 ```java @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.csrf().disable() .authorizeRequests() .antMatchers("/upload/**").authenticated() // 只有经过身份验证的用户才能访问 /upload 路径下的资源 .anyRequest().permitAll(); // 对其他请求不做限制 http.httpBasic(); // 启用 HTTP 基本认证方式 } } ``` 上述代码片段展示了如何针对 `/upload/` 下的所有路径应用基于角色的身份验证控制逻辑;同时禁用了 CSRF 保护(仅用于简化示例),实际生产环境中应谨慎考虑是否关闭该功能[^3]。 #### 处理多部分表单数据提交 对于涉及文件传输的操作,通常会采用 multipart/form-data 编码格式发送 POST 请求。因此还需要调整控制器层的相关处理器方法签名以便正确接收这些类型的参数。 ```java @RestController @RequestMapping("/api/files") public class FileUploadController { private static final Logger logger = LoggerFactory.getLogger(FileUploadController.class); @PostMapping(value="/upload", consumes="multipart/form-data") public ResponseEntity<String> uploadFile(@RequestParam("file") MultipartFile file){ try{ // Save the file... return new ResponseEntity<>("Successfully uploaded - " + file.getOriginalFilename(), HttpStatus.OK); }catch (Exception e){ logger.error(e.getMessage()); return new ResponseEntity<>(e.getMessage(), HttpStatus.EXPECTATION_FAILED); } } } ``` 这段 Java 控制器代码接受来自前端页面或移动设备发出的带有附件字段 (`name=file`) 的 HTTP 表单提交,并将其保存到服务器上指定位置。 #### 设置正确的 Content-Type 和 Authorization Header 最后也是最重要的一环是在发起文件上传之前确认设置了恰当的内容类型以及携带有效令牌作为授权头部信息的一部分。这可以借助于各种编程语言中的 HTTP 库完成,比如 JavaScript 中的 Fetch API 或 Axios 库等工具库。 ```javascript const formData = new FormData(); formData.append('file', selectedFile); fetch('/api/files/upload', { method: 'POST', headers: {'Authorization': 'Bearer YOUR_ACCESS_TOKEN'}, body: formData, }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error)); ``` 以上步骤共同作用下能够有效地解决因缺少适当权限而导致无法成功调用受保护服务的问题。值得注意的是,这里提到的方法适用于大多数场景,但在某些特殊情况下可能需要进一步定制化适配。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值