1. 获取邮箱授权码
    登录邮箱------->点击设置------->点击账户,下拉------->找到POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务------->按照步骤开启POP3/SMTP服务 ------->获取授权码

2.在pom.xml中添加依赖:

        <!--mail--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId><version>2.6.9</version></dependency>

3.配置yml文件:

  mail:host: smtp.qq.com #不同的邮箱不一致,请自行百度查询port: 587 #qq邮箱默认username: 1916403680@qq.com #发送邮箱password: ******** #授权码# 设置是否需要认证,如果为true,那么用户名和密码就必须的,# 如果设置false,可以不设置用户名和密码,当然也得看你的对接的平台是否支持无密码进行访问的。auth=true

4.建实体类等等:

具体操作看这

5.写配置文件:

spring:    mail:host: smtp.qq.com #不同的邮箱不一致,请自行百度查询port: 587 #qq邮箱默认username: 1916403680@qq.com #发送邮箱password: zsxhbrjtylbibccc #授权码auth: false #不需要邮件密码

6.写一个工具类用来存放随机验证码方法:

/*** 随机生成验证码工具类*/
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);//生成随机数,最大为9999if(code < 1000){code = code + 1000;//保证随机数为4位数字}}else if(length == 6){code = new Random().nextInt(999999);//生成随机数,最大为999999if(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;}
}

7.写发送邮件的方法:

public interface UserService extends IService<User> {public String send(User user);
}

@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {@Autowiredprivate JavaMailSender mailSender;//获取配置文件的邮件账号@Value("${spring.mail.username}")private String from;@Overridepublic String send(User user) {//生成随机数String code = ValidateCodeUtils.generateValidateCode(4).toString();try {SimpleMailMessage mailMessage = new SimpleMailMessage();//主题mailMessage.setSubject("验证码邮件");//内容mailMessage.setText("您收到的验证码是:" + code);System.out.println("您收到的验证码是:" + code);//发给谁mailMessage.setTo(user.getPhone());//你自己的邮箱(可以去配置文件中获取)mailMessage.setFrom(from);//发送mailSender.send(mailMessage);} catch (Exception e) {e.printStackTrace();return code;}return code;}
}

8.写控制类:

@RestController
@RequestMapping("/user")
@Slf4j
public class UserController {@Autowiredprivate UserService userService;/*** 发送邮件短信验证码* @param user* @return*/@PostMapping("/sendMsg")public R<String> sendMsg(@RequestBody User user, HttpSession session){//获取邮箱String phone = user.getPhone();if(StringUtils.isNotEmpty(phone)){//发送验证码到邮箱String code = userService.send(user);//需要将生成的验证码保存到Sessionsession.setAttribute(phone,code);return R.success("手机验证码短信发送成功");}return R.error("短信发送失败");}/*** 移动端登录* @param map* @param session* @return*/@PostMapping("/login")public R<User> sendMsg(@RequestBody Map map, HttpSession session){//获取邮箱String phone = map.get("phone").toString();//获取验证码String code = map.get("code").toString();//从Session中获取保存的验证码Object codeInSession = session.getAttribute(phone);//进行验证码的比对(页面提交的验证码和Session中保存的验证码比对)if(codeInSession != null && codeInSession.equals(code)){//如果能够比对成功,说明登录成功LambdaQueryWrapper<User> eq = Wrappers.lambdaQuery(User.class).eq(User::getPhone, phone);User user = userService.getOne(eq);if(user == null){//判断当前邮箱账号对应的用户是否为新用户,如果是新用户就自动完成注册user = new User();user.setPhone(phone);user.setStatus(1);userService.save(user);}session.setAttribute("user",user.getId());return R.success(user);}return R.error("登录失败");}
}

QQ邮箱验证码登录(移动端邮箱验证登录)相关推荐

  1. java短信登录_JAVA短信验证登录

    短信验证登陆 1.点击触发,以电话号码为参数调用发送验证登录短信方法 2.默认模板为验证模板 生成6位验证码 3.将生成的验证码和手机号码放入缓存,(已经设置好缓存存放时间) 4.调用发送模板短信方法 ...

  2. SSH证书登录方式(无密码验证登录)

    常常在工作中需要在各个Linux机间进行跳转,每次密码的输入成了麻烦,而且也不安全.在实际使用中,在windows下常使用secureCRT工具或teraterm工具进行SSH登录,以及实现hadoo ...

  3. 【邮箱验证码】springboot 使用邮箱服务发送验证码 ,在阿里云服务器端口的配置

    1.我们需要登录邮箱开通邮箱授权码 2.然后需要pom需要引入spring-boot-starter-mail <dependency><groupId>org.springf ...

  4. JavaWeb登录注册系统/界面(邮箱验证码,数据库连接,详细注释,可作结课作业,可用于学习,可接入其他主系统)

    目录 1.前言 2.系统实机演示 3.系统分析与设计 (1)主要软件与工具 (2)系统分析 (3)系统规划 4.系统设计与构建 (1)JavaWeb创建 (2)JavaWeb运行 (3)先期依赖准备: ...

  5. java 验证邮箱_Java实现邮箱验证码

    声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权:凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记. 邮箱验证码 一般能使用邮箱注册的账户,在进行登录.注册或忘记 ...

  6. java邮箱验证码_Java实现邮箱验证码

    原标题:Java实现邮箱验证码 声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权:凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记. 邮箱验证码 一般能使用邮箱注 ...

  7. java短信验证码功能发送的验证码如何校验_发送短信验证码和邮箱验证码—Java实现...

    短信验证码 短信验证码都是调用一些接口来进行短信的发送,短信验证码在登录.注册等操作中使用的最广泛,本文这一节演示如何使用Java制作一个简单的短信验证码登录. 我这里演示使用的是聚合数据的短信接口( ...

  8. Flask项目实战——7—(Redis数据库存储验证码信息、验证登录界面的表单信息、注册功能实现、登录实现)

    推荐一个API平台:聚合数据 1.Redis数据库存储验证码信息 保存手机验证码到Redis数据库 公有视图文件:apps/common/views.py # -*- encoding: utf-8 ...

  9. json web token 实践登录以及校验码验证

    去年我写了一篇介绍 jwt 的文章. 文章指出如果没有特别的用户注销及单用户多设备登录的需求,可以使用 jwt,而 jwt 的最大的特征就是无状态,且不加密. 除了用户登录方面外,还可以使用 jwt ...

  10. 139邮箱java版下载_139邮箱手机版下载-139邮箱手机客户端下载 8.9.1-领航下载站

    139邮箱手机客户端,是中国移动提供给我们的一款电子邮件软件,可以用手机号@139.com作为个人的邮箱,大大的提高了我们日常工作的效率,功能齐全,下面小编会写到,有需要的小伙伴可以下载体验一下哦~ ...

最新文章

  1. 微服务为什么一定要用docker
  2. 第二章 选择符和属性
  3. 写一个 JavaScript 框架:比 setTimeout 更棒的定时执行
  4. windows mobile开发循序渐进(6)windows mobile device center 使用问题
  5. spring注入私有字段_Spring字段依赖注入示例
  6. Java常用类StringBuffer详解
  7. 又一个网页下载者木马
  8. 大数据之-入门_大数据部门组织结构(重点)---大数据之hadoop工作笔记0007
  9. enum类型的标签内容根据语言的取法
  10. 转:Python 主进程被杀死时,如何保证子进程同时退出而不变为孤儿进程
  11. 不属于计算机完成科学特点的是,2019年网络教育统考《计算机应用基础》试卷版练习题2...
  12. 手机锁屏密码忘了怎么办
  13. 人工智能(机器学习)学习路线
  14. linux 命令行管理员身份运行,任意位置以管理员身份打开CMD(命令提示符)
  15. 陌陌发布新版 增加阅后即焚和短视频功能
  16. 刚体质量分布与牛顿-欧拉方程
  17. 分布式任务调度系统-定时任务的解决方案
  18. 考研计算机专业英语面试自我介绍,2017年计算机专业研究生英语面试自我介绍...
  19. 再度联手中国联通,开启第二个五年战略合作!
  20. [福大软工] Z班 团队作业——随堂小测(同学录) 作业成绩

热门文章

  1. 你是谁的蘑菇,你的蘑菇又在哪?
  2. 24只胡萝卜的管理精神(节录)
  3. 太让人失望了,这些公司建议避雷!
  4. 西门子PLC中DB与DI有什么区别
  5. cuda编译错误 ptxas fatal : Unresolved extern function xxxx
  6. 笔记本驱动图标消失怎么办
  7. 入门级深度学习服务器配置方案
  8. 视频人员行为识别(Action Recognition)
  9. 扭转二战战局的密码系统 | 历史上的今天
  10. 淘宝天猫店铺微信公众平台建设指南