一、开启 POP3/SMTP服务 获得的授权码
进入qq邮箱
没有开启服务要选择开启,开启了的话需要点击管理服务,
进入管理服务的安全设置点击生成授权码
微信扫码短信验证
然后需要你保存好这个授权码后面要用
二、前端登录界面拦截器修改
修改提示
修改邮箱匹配正则表达式
三、修改pom.xml和application.yml
pom.xml<!-- 邮件服务 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency><!-- Thymeleaf --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency>
application.yml
# 邮箱配置mail:host: username: [1312831081@] # 开启IMAP/SMTP服务对应qq邮箱的账号password: [qewrgszdg] # 前面开启 IMAP/SMTP服务获得的授权码default-encoding: UTF-8
二、后端接口修改
controller@PostMapping("/sendMsg")public R<String> sendMsg(@RequestBody User user, HttpSession session) {// 获取邮箱账号String phone = user.getPhone();String subject = "瑞吉外卖登录验证码";if (StringUtils.isNotEmpty(phone)) {String code = ValidateCodeUtils.generateValidateCode(4).toString();String context = "登录验证码为: " + code + ",五分钟内有效!";log.info("code={}", code);// 发送邮箱验证码userService.sendMsg(phone, subject, context);// 验证码缓存到Redis中,有效时间为 5分钟redisTemplate.opsForValue().set(phone, code, 5, TimeUnit.MINUTES);return R.success("验证码发送成功!");}return R.error("验证码发送失败,请重新输入!");}
Service
void sendMsg(String to,String subject,String context);
ServiceImpl
@Value("${spring.mail.username}")private String from; // 邮件发送账号对应yml文件,即开启IMAP/SMTP服务对应qq邮箱的账号@Autowiredprivate JavaMailSender mailSender;@Overridepublic void sendMsg(String to, String subject, String context) {SimpleMailMessage mailMessage = new SimpleMailMessage();mailMessage.setFrom(from);mailMessage.setTo(to);mailMessage.setSubject(subject);mailMessage.setText(context);mailSender.send(mailMessage);}