本文實(shí)例為大家分享了springboot實(shí)現(xiàn)郵箱驗(yàn)證碼功能的具體代碼,供大家參考,具體內(nèi)容如下
成都創(chuàng)新互聯(lián)公司是專(zhuān)業(yè)的曲沃網(wǎng)站建設(shè)公司,曲沃接單;提供網(wǎng)站設(shè)計(jì)制作、網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專(zhuān)業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行曲沃網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專(zhuān)業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專(zhuān)業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!
我這邊使用的QQ郵箱
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.bean mybatis.mapper-locations=classpath:mapper/*.xml #數(shù)據(jù)庫(kù)相關(guān) spring.datasource.url=jdbc:mysql://localhost:3306/ssm?useSSL=false spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driver-class-name=com.mysql.jdbc.Driver #配置日志 logging.level.root=info logging.level.com.demo.mapper=debug #配置視圖前綴和后綴 spring.mvc.view.prefix=/ spring.mvc.view.suffix=.html #郵件發(fā)送配置 spring.mail.default-encoding=UTF-8 spring.mail.host=smtp.qq.com spring.mail.username=你的郵箱 spring.mail.password=郵箱授權(quán)碼 spring.mail.properties.mail.smtp.auth=true spring.mail.properties.mail.smtp.starttls.enable=true spring.mail.properties.mail.smtp.starttls.required=true #thymeleaf配置 spring.thymeleaf.mode=HTML5 spring.thymeleaf.encoding=UTF-8 spring.thymeleaf.servlet.content-type=text/html spring.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
@Controller
public 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 >
<div >
<div class="layui-main" >
<h2 >請(qǐng)輸入注冊(cè)信息</h2>
<form class="layui-form layui-form-pane">
<div class="layui-form-item">
<label class="layui-form-label">郵箱:</label>
<div class="layui-input-block">
<input id="email" type="email" name="username" class="layui-input" lay-verify="required"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">密碼:</label>
<div class="layui-input-block">
<input id="password" type="password" name="password" class="layui-input" lay-verify="required"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">郵箱驗(yàn)證碼:</label>
<div 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>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit lay-filter="register">確認(rèn)</button>
</div>
</div>
</form>
</div>
</div>
<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)輸入郵箱!!!");
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>6、測(cè)試

郵件發(fā)送

發(fā)送成功

收到郵件

60s禁止重發(fā)
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。
分享文章:springboot實(shí)現(xiàn)郵箱驗(yàn)證碼功能
鏈接URL:http://chinadenli.net/article40/jggjho.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、企業(yè)建站、電子商務(wù)、網(wǎng)頁(yè)設(shè)計(jì)公司、品牌網(wǎng)站制作、App開(kāi)發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)