为了账号安全,请及时绑定邮箱和手机立即绑定

java发送注册验证邮件的问题

java发送注册验证邮件的问题

小唯快跑啊 2019-03-12 13:14:15
我用java mail发送用户注册验证邮件,邮件能正常发送,但是发送时,邮件中含有注册验证的超链接,不知道为什么系统会自动访问该超链接,以至于用户点击该超链接时,链接已失效?这是为什么?还请帮忙解答一下,我该如何做?以下是我的代码:final String registerUrl = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/service/portal/user/emailVerify?userName=" + name +"&registerId=" + registerId.toString();        final MimeMessagePreparator preparator = new MimeMessagePreparator() {                 public void prepare(MimeMessage mimeMessage) throws Exception {                     MimeMessageHelper message = new MimeMessageHelper(mimeMessage,true,"UTF-8");                     message.setSubject("用户注册确认");                     message.setTo(email);                     message.setFrom("xxx@xxx.com");                     Map<String, Object> model = new HashMap<String, Object>();                     model.put("user", user);                     model.put("domain", registerUrl);                   String text = VelocityEngineUtils.mergeTemplateIntoString(                     velocityEngine, "registration-confirmation.vm","UTF-8", model);                     message.setText(text, true);                 }             };           try{            Thread thread = new Thread(){//异步发送邮件                public void run(){                    javaMailSender.send(preparator);                }            };            thread.start();           }catch(MailException e) {                 e.printStackTrace();             }具体发送邮件是在spring中配置的,用的是JavaMailSenderImpl,我看不出是哪儿的问题,麻烦帮忙看看。spring的配置如下:<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">  <property name="host" value="smtp.exmail.qq.com" />   <property name="port" value="25" />   <property name="username" value="xxx@xx.com" />   <property name="password" value="xxx" />   <property name="javaMailProperties">      <props>          <prop key="mail.smtp.auth">true</prop>           <prop key="mail.smtp.timeout">25000</prop>       </props>  </property>  
查看完整描述

2 回答

?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

没遇到过。是不是中间某个环节邮件内容被解析了?可以试试看打印下访问链接的userAgent,看看能不能发现是哪个环节出的问题。

查看完整回答
反对 回复 2019-04-15
?
繁星淼淼

TA贡献1775条经验 获得超11个赞

非根治方案:

  1. 改成非超链接,让用户自行复制访问...

  2. 改成验证码模式,设置专门的验证页面,通过邮件发送验证码...

  3. 改成二次访问的方式...你说讲的系统访问应该不是浏览器访问,那么只是单纯的GET请求,不会运行页面中的JS
    因此,可以设置一个中转的验证页面,通过浏览器运行JS跳转到真正的一次性的验证页面...

  4. 如楼上那样通过检查cookies/useragent之类的参数进行区分...


查看完整回答
反对 回复 2019-04-15
  • 2 回答
  • 0 关注
  • 414 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信