1、导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
2、配置文件(yml格式)
spring:
mail:
# 邮件服务地址
host: smtp.163.com
# 端口 465/994/25
port: 25
# 编码格式
default-encoding: UTF-8
# 用户名
username: 邮箱@163.com
# 协议
protocol: smtp
# 客户端授权码
password: 授权码
# 其它参数
properties:
mail:
debug: true
smtp:
auth: true
3、验证码生成工具
import java.util.Random;
public class ValidateCodeUtils {
/**
* 随机生成验证码
* @param length 长度为4位或者6位
* @return
*/
public static Integer generateValidateCode(int length){
Integer code =null;
if(length == 4){
code = new Random().nextInt(9999);//生成随机数,最大为9999
if(code < 1000){
code = code + 1000;//保证随机数为4位数字
}
}else if(length == 6){
code = new Random().nextInt(999999);//生成随机数,最大为999999
if(code < 100000){
code = code + 100000;//保证随机数为6位数字
}
}else{
throw new RuntimeException("只能生成4位或6位数字验证码");
}
return code;
}
/**
* 随机生成指定长度字符串验证码
* @param length 长度
* @return
*/
public static String generateValidateCode4String(int length){
Random rdm = new Random();
String hash1 = Integer.toHexString(rdm.nextInt());
String capstr = hash1.substring(0, length);
return capstr;
}
}
4、实现类
@RestController
@RequestMapping("/auth/user")
@CrossOrigin
@Slf4j
public class LoginController {
@Autowired
private JavaMailSender mailSender;
@GetMapping("/sendMsg")
public R sendMsg(String Email){
String code = ValidateCodeUtils.generateValidateCode(4).toString();
SimpleMailMessage message = new SimpleMailMessage();
message.setFrom("你的邮箱");
message.setTo(Email);
message.setSubject("短信验证");
message.setText("您的验证码为:" + code + ",请勿泄露给他人。");
try {
mailSender.send(message);
log.info("send success.................");
} catch (Exception e) {
log.error("异常", e);
}
return R.ok(code);
}
5、测试