SpringBoot实现 QQ邮箱验证码
一、开通SMTP校验码
1.登录qq邮箱

2.开启SMTP服务

3.发送手机短信

4.得到授权码

二、回到spring项目中
1.导入所需依赖
<!--邮箱验证登录导入的依赖-->
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-email</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.1</version>
</dependency>
<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-core</artifactId>
</dependency>
2.验证码工具类
public class ValidateCodeUtils {
public static String generateValidateCode(int length) {
String code = "";
Random random = new Random();
for (int i = 0; i < length; i++) {
int type = random.nextInt(3);
switch (type) {
case 0:
code += (char) (random.nextInt(10) + '0');
break;
case 1:
code += (char) (random.nextInt(26) + 'A');
break;
case 2:
code += (char) (random.nextInt(26) + 'a');
break;
}
}
return code;
}
public static String generateValidateCode4String(int length){
Random rdm = new Random();
String hash1 = Integer.toHexString(rdm.nextInt());
String capstr = hash1.substring(0, length);
return capstr;
}
}
public class EmailUtil {
public static void sendAuthCodeEmail(String email, String authCode) {
try {
SimpleEmail mail = new SimpleEmail();
mail.setHostName("smtp.qq.com");
mail.setAuthentication("xxx@qq.com", "xxx");
mail.setFrom("xxx@qq.com","xxx");
mail.setSSLOnConnect(true);
mail.addTo(email);
mail.setSubject("xxx验证码");
mail.setMsg("尊敬的用户您好,\n\n感谢您选择我们的服务!您的登录验证码为:"+"["+authCode+"]"+",请妥善保管。请注意,该验证码仅在三分钟内有效,请尽快使用。\n\n若有任何疑问,请随时联系我们。祝您生活愉快");
mail.send();
} catch (EmailException e) {
e.printStackTrace();
}
}
}
3.具体实现逻辑(serviceimpl)
@Override
public ResponseResult sendEmail(String msg) {
if(StringUtils.isNotEmpty(msg)){
String code = ValidateCodeUtils.generateValidateCode(6).toString();
logger.info("验证码code:" + code);
EmailUtil.sendAuthCodeEmail(msg,code);
redisTemplate.opsForValue().set(msg , code,3, TimeUnit.MINUTES);
return new ResponseResult(200,"发送成功",code);
}
return new ResponseResult(410,"发送失败",null);
}
三、测试qq邮箱验证码
