下面是详细讲解Spring Boot发送html邮箱验证码功能的完整攻略。
在开始之前,你需要准备以下的工具和资源:
首先,你需要创建一个新的Spring Boot项目,并在其中添加以下依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
第一个依赖是用于启动web服务的,第二个依赖是用于支持发送邮件的,第三个依赖是用于支持在模板中使用thymeleaf语法。
在application.yml文件中,你需要编写邮件服务的基本参数配置,如下所示:
spring:
mail:
host: 邮箱服务器地址
username: 用户名
password: 密码
port: 端口号
default-encoding: UTF-8
properties:
mail:
smtp:
auth: true
starttls:
enable: true
其中,host、username、password、port需要替换为你自己的邮箱服务商提供的SMTP协议访问信息。
接下来,你需要创建一个Java类,用于实现邮件服务的相关功能。代码如下:
@Service
public class MailServiceImpl implements MailService {
@Autowired
private JavaMailSender mailSender;
@Override
public void sendMail(String to, String subject, String content) throws MessagingException {
MimeMessage message = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, true, "UTF-8");
helper.setFrom("发件人邮箱地址");
helper.setTo(to);
helper.setSubject(subject);
helper.setText(content, true);
mailSender.send(message);
}
}
其中,to表示收件人邮箱地址,subject表示邮件主题,content表示邮件内容。sendMail方法的实现是通过MimeMessage对象以及JavaMailSender的send方法来完成邮件发送的。
接下来,你需要编写一个控制器,用于处理在web项目中发送邮件的相关请求。代码如下:
@Controller
public class VerifyController {
@Autowired
private MailService mailService;
@GetMapping("/sendVerifyCode")
public String sendVerifyCode(@RequestParam("email") String email, HttpServletRequest request) throws MessagingException {
int code = new Random().nextInt(900000) + 100000;
request.getSession().setAttribute("verifyCode", String.valueOf(code));
String content = "<html><head><meta charset=\"UTF-8\"></head><body><div style=\"width: 600px; margin: 0 auto;\">" +
"<h2>邮箱验证码</h2><p style=\"font-size: 18px; color: #ff9753;\">验证码:<span style=\"font-weight: bold;\">" + code +
"</span> <a href=\"#\" style=\"color: #438eb9; text-decoration: none;\">立即验证</a></p></div></body></html>";
mailService.sendMail(email, "邮箱验证码", content);
return "success";
}
}
其中,@GetMapping("/sendVerifyCode")注解表示只处理GET请求,并且触发的URL地址为/sendVerifyCode。sendVerifyCode方法中,首先获取一个6位随机验证码,并将其存储到Session中,然后通过邮件服务发送邮件到指定的邮箱地址。邮件内容采用了HTML标记语言,并将随机验证码插入到其中。
最后,你需要编写一个HTML页面模板,用于显示邮件验证的相关信息。代码如下:
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>邮件验证</title>
</head>
<body>
<div style="width: 600px; margin: 0 auto;">
<h2>邮箱验证</h2>
<form action="#">
<label>输入邮箱:</label>
<input type="text" name="email">
<button type="button" onclick="sendVerifyCode()">发送验证码</button>
</form>
</div>
<script>
function sendVerifyCode() {
var email = $("input[name='email']").val();
$.get("/sendVerifyCode?email=" + email, function (result) {
if (result === "success") {
alert("邮件发送成功,请查收邮件并验证。");
} else {
alert("邮件发送失败,请重试。");
}
});
}
</script>
</body>
</html>
其中,form表单中包含了一个输入邮箱地址的文本框和一个发送验证码的按钮,点击按钮会触发sendVerifyCode函数,通过jQuery的get方法向服务端发送请求,并将邮件发送结果进行提示。
在上述代码实现的基础上,你需要将mail.host、mail.username、mail.password、mail.port等参数配置改为你使用QQ邮箱的SMTP协议访问信息。同时,你需要确保你的QQ邮箱开启了SMTP服务,否则无法发送邮件。配置完成之后,你可以启动Spring Boot应用,并访问http://localhost:8080/verify页面进行测试。
与上述示例基本一致,只是将mail.host、mail.username、mail.password、mail.port等参数配置改为你使用126邮箱的SMTP协议访问信息。同样需要确保你的126邮箱开启了SMTP服务。启动应用,访问http://localhost:8080/verify页面进行测试。
到这里,Spring Boot发送html邮箱验证码的完整攻略就结束了。希望这篇文章对你有所帮助!
本文链接:http://task.lmcjl.com/news/18797.html