溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

springboot中怎么實(shí)現(xiàn)一個(gè)郵箱驗(yàn)證碼功能

發(fā)布時(shí)間:2021-07-08 17:01:55 來(lái)源:億速云 閱讀:145 作者:Leah 欄目:編程語(yǔ)言

springboot中怎么實(shí)現(xiàn)一個(gè)郵箱驗(yàn)證碼功能,針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。

1、首先創(chuàng)建maven項(xiàng)目,配置pom文件

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion>  <groupId>com.example</groupId> <artifactId>springbootdemo</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging>  <name>springbootdemo</name> <description>Demo project for Spring Boot</description>  <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.4.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent>  <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties>  <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.2</version> </dependency> <!--郵件發(fā)送核心包--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <dependency>   <groupId>org.springframework.boot</groupId>   <artifactId>spring-boot-devtools</artifactId>   <optional>true</optional> <!-- 這個(gè)需要為 true 熱部署才有效 -->  </dependency>  <!--mybatis分頁(yè)插件--> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>4.1.6</version> </dependency>   </dependencies>  <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> <resources> <resource> <directory>src/main/java</directory>  <includes>  <include>**/*.xml</include>  </includes> </resource> </resources> </build> </project>

2、配置springboot,我這里使用的是properties方式

#配置Mybatis別名和掃描包mybatis.type-aliases-package=com.demo.beanmybatis.mapper-locations=classpath:mapper/*.xml #數(shù)據(jù)庫(kù)相關(guān)spring.datasource.url=jdbc:mysql://localhost:3306/ssm?useSSL=falsespring.datasource.username=rootspring.datasource.password=123456spring.datasource.driver-class-name=com.mysql.jdbc.Driver #配置日志logging.level.root=infologging.level.com.demo.mapper=debug #配置視圖前綴和后綴spring.mvc.view.prefix=/spring.mvc.view.suffix=.html #郵件發(fā)送配置spring.mail.default-encoding=UTF-8spring.mail.host=smtp.qq.comspring.mail.username=你的郵箱spring.mail.password=郵箱授權(quán)碼spring.mail.properties.mail.smtp.auth=truespring.mail.properties.mail.smtp.starttls.enable=truespring.mail.properties.mail.smtp.starttls.required=true #thymeleaf配置spring.thymeleaf.mode=HTML5spring.thymeleaf.encoding=UTF-8spring.thymeleaf.servlet.content-type=text/htmlspring.thymeleaf.cache=false

郵箱授權(quán)碼可以按以下方法獲取打開(kāi)QQ郵箱網(wǎng)頁(yè)→設(shè)置→賬戶→POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服務(wù)→開(kāi)啟POP3/SMTP服務(wù),然后就能看到授權(quán)碼了

3、編寫(xiě)mailService

${spring.mail.username}是在properties中配置的屬性,這里有一個(gè)方法,第一個(gè)是發(fā)送普通郵件,第二個(gè)是發(fā)送帶有附件的郵件

@Service("mailService")public class MailService { @Value("${spring.mail.username}") private String from; @Autowired private JavaMailSender mailSender;  Logger logger = LoggerFactory.getLogger(this.getClass());  public void sendSimpleMail(String to,String title,String content){  SimpleMailMessage message = new SimpleMailMessage();  message.setFrom(from);  message.setTo(to);  message.setSubject(title);  message.setText(content);  mailSender.send(message);  logger.info("郵件發(fā)送成功"); }  public void sendAttachmentsMail(String to, String title, String cotent, List<File> fileList){  MimeMessage message = mailSender.createMimeMessage();  try {   MimeMessageHelper helper = new MimeMessageHelper(message,true);   helper.setFrom(from);   helper.setTo(to);   helper.setSubject(title);   helper.setText(cotent);   String fileName = null;   for (File file:fileList) {    fileName = MimeUtility.encodeText(file.getName(), "GB2312", "B");    helper.addAttachment(fileName, file);   }  } catch (Exception e) {   e.printStackTrace();  }  mailSender.send(message);  logger.info("郵件發(fā)送成功"); }}

4、編寫(xiě)controller

@Controllerpublic class MailController { @Autowired private MailService mailService;  @RequestMapping("getCheckCode") @ResponseBody public String getCheckCode(String email){  String checkCode = String.valueOf(new Random().nextInt(899999) + 100000);  String message = "您的注冊(cè)驗(yàn)證碼為:"+checkCode;  try {   mailService.sendSimpleMail(email, "注冊(cè)驗(yàn)證碼", message);  }catch (Exception e){   return "";  }  return checkCode; }}

5、編寫(xiě)頁(yè)面

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>注冊(cè)</title> <link rel="stylesheet" href="layui/css/layui.css" rel="external nofollow" > <script src="layui/layui.js"></script></head><body > <p >  <p class="layui-main" >   <h2 >請(qǐng)輸入注冊(cè)信息</h2>   <form class="layui-form layui-form-pane">    <p class="layui-form-item">     <label class="layui-form-label">郵箱:</label>     <p class="layui-input-block">      <input id="email" type="email" name="username" class="layui-input" lay-verify="required"/>     </p>    </p>    <p class="layui-form-item">     <label class="layui-form-label">密碼:</label>     <p class="layui-input-block">      <input id="password" type="password" name="password" class="layui-input" lay-verify="required"/>     </p>    </p>    <p class="layui-form-item">     <label class="layui-form-label">郵箱驗(yàn)證碼:</label>     <p class="layui-input-block">      <input id="checkCode" type="text" name="checkCode" class="layui-input" lay-verify="required"/>      <button id="sendCheckCode" type="button" class="layui-btn layui-btn-normal">獲取驗(yàn)證碼</button>     </p>    </p>    <p class="layui-form-item">     <p class="layui-input-block">      <button class="layui-btn" lay-submit lay-filter="register">確認(rèn)</button>     </p>    </p>   </form>  </p> </p> <script>  layui.use("form",function () {   var form = layui.form;   var $ = layui.$;      form.on("submit(register)",function (data) {    var inputCheckCode = $("#checkCode").val();    if (inputCheckCode == checkCode){     $.ajax({      url:"/register",      type:"POST",      data:data.field,      async:false,      success:function (text) {       if ("ok" == text){        layer.alert("注冊(cè)成功",function () {         window.location.href = "index.html";        });       }else{        layer.alert("注冊(cè)失敗");       }      }     });    } else{     layer.msg("驗(yàn)證碼輸入錯(cuò)誤");    }    return false;   });    //驗(yàn)證碼   var checkCode = "";    $("#sendCheckCode").click(function () {    var email = $("#email").val();    if (email == null || email == ""){     layer.msg("請(qǐng)輸入郵箱?。。?quot;);     return;    }    var index = layer.open({     type:3,     content:"郵件發(fā)送中..."    });     $.ajax({     url:"/getCheckCode?email="+email,     type:"get",     success:function (text) {      if (text != null && text != ""){       layer.close(index);       layer.msg("已發(fā)送");       checkCode = text;       countDown();      } else{       layer.alert("獲取失敗,請(qǐng)重新獲取")      }     }    });   });    var maxTime = 60;   function countDown(){    if (maxTime == 0){     checkCode = "";     $("#sendCheckCode").removeClass("layui-btn-disabled");     $("#sendCheckCode").removeAttr("disabled")     $("#sendCheckCode").html("獲取驗(yàn)證碼");     maxTime = 60;    }else{     $("#sendCheckCode").attr("disabled","disabled");     $("#sendCheckCode").addClass("layui-btn-disabled");     form.render();     $("#sendCheckCode").html(maxTime+"秒后重新獲取");     maxTime--;     setTimeout(countDown,1000);    }   }   }); </script></body></html>

關(guān)于springboot中怎么實(shí)現(xiàn)一個(gè)郵箱驗(yàn)證碼功能問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI