You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot(STS4)中JavaMailSender发送Naver邮箱验证码无响应求助

排查发送验证码无响应问题的步骤

一、先查AJAX代码的核心问题

  • 先看按钮是不是在<form>标签里:要是在的话,点击按钮会触发表单默认提交,直接刷新页面,AJAX请求根本没机会执行。解决办法是在点击事件里加event.preventDefault(),或者用return false阻止默认行为。
  • 核对请求URL和后端接口路径:比如后端接口是/api/send-verification-code,AJAX里的url字段必须完全一致,别少写路径或者拼错单词。
  • 匹配请求方法:后端接口如果是POST类型(比如Spring里的@PostMapping),AJAX里的method(或type)必须设为POST,不能用GET,反之亦然。
  • 检查参数名是否和后端对应:比如后端接收邮箱的参数是email,AJAX的data就得写成{email: $('#emailInput').val()},参数名错了后端拿不到数据,请求等于白发。
  • 强制加上错误回调:现在控制台没报错,大概率是AJAX没捕获错误。给AJAX加个error函数,把请求的错误信息打出来,比如:
    $.ajax({
      url: '/send-verification-code',
      method: 'POST',
      data: {email: $('#email').val()},
      success: function(res) {
        // 成功后的提示逻辑
      },
      error: function(xhr, status, err) {
        console.log('请求出错了:', status, err);
        console.log('后端返回的内容:', xhr.responseText);
      },
      complete: function() {
        console.log('请求结束了');
      }
    });
    
    这样控制台就能显示具体问题,比如404(路径错了)、500(后端报错)。

二、后端接口和邮件逻辑排查

  • 检查AccountController的接口映射:比如有没有加正确的@PostMapping(或对应注解),路径和AJAX的url完全匹配吗?有没有漏掉前缀?
  • 看邮件发送是不是阻塞了请求:如果RegisterMail里的邮件发送是同步执行的,Naver邮箱的SMTP连接慢的话,会导致请求超时,浏览器一直等响应就显得无响应。可以把邮件发送改成异步,比如Spring里加@Async注解,让后台线程去发邮件,接口先返回响应。
  • 核对MailConfig的配置:Naver的SMTP服务器是smtp.naver.com,SSL端口465,TLS端口587,用户名是你的Naver邮箱账号,密码要注意是第三方应用授权码(不是登录密码),有没有开启邮箱的SMTP服务?
  • 看后端日志:打开后端服务器的日志,有没有收到AJAX的请求记录?有没有邮件发送的报错信息?比如认证失败、连接超时这些,都能在日志里找到。

三、跨域问题排查

如果前端页面和后端服务器不在同一个域名(比如前端是localhost:8080,后端是localhost:9090),浏览器会拦截跨域请求,导致AJAX发不出去。解决办法是在后端控制器上加@CrossOrigin注解(Spring),或者配置全局跨域规则。

四、前端验证后的逻辑检查

确认没输入邮箱时的提示逻辑执行后,是不是正确终止了后续AJAX请求?如果输入了邮箱,有没有真的触发AJAX代码?可以在AJAX代码前加console.log('准备发请求了'),看控制台有没有输出,判断是不是走到了AJAX这一步。


内容的提问来源于stack exchange,提问作者Anonymous

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 14:31:00