仿瑞吉外卖 【手机登陆功能换成邮件登陆】

发布于:2022-12-03 ⋅ 阅读:(189) ⋅ 点赞:(0)

前言
👏作者简介:我是笑霸final,一名热爱技术的在校学生。
📝个人主页:个人主页1 || 笑霸final的主页2
📕系列专栏:《项目专栏》
📧如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀
🔥如果感觉博主的文章还不错的话,👍点赞👍 + 👀关注👀 + 🤏收藏🤏

一、导入坐标

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


二.邮件发送需要的配置

因为各大邮件都有其对应安全系统,不是项目中想用就可以用的,我们必须要拿到其对应的客户端授权码才行,拿到授权码,在项目中配置SMTP服务协议以及主机 配置账户 ,就可以在项目中使用各大邮件运营商进行发送邮件了

步骤(取QQ邮箱授权码为例):

  • 先登陆qq邮箱 然后点击设置 选择 账户选项

  • 开启POP3/SMTP
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pjqtcoNq-1664671848565)(https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/0f968de98a0e49e780a389725818cef8~tplv-k3u1fbpfcp-watermark.image?)]

  • 然后牢记授权码Springboot工程中的配置文件 aplication.yml 或者properties文件配置授权码

spring:
  mail:
   
    #smtp服务主机  163邮箱则为smtp.163.com
    host: smtp.qq.com
    #服务协议
    protocol: smtp
    # 编码集
    default-encoding: UTF-8
    #发送邮件的账户
    username: xxxxxxx@qq.com
    #授权码
    password: xxxxxx
    test-connection: true
    properties:
      mail:
        smtp:
          auth: true
          starttls:
            enable: true
            required: true

在这里插入图片描述

三.代码编写

  • 先在
    Usercontroller 中注入对象
@Autowired
private JavaMailSender mailSender;

在这里插入图片描述

  • 发送方就是我们自己的邮件了!在Usercontroller写
@Value("${spring.mail.username}")
private String MyFrom;

在这里插入图片描述

四、SimpleMailMessage 详细说明

SimpleMailMessage message = new SimpleMailMessage();
message.setFrom();//发送人

message.setTo();//谁要接收

message.setSubject("");//邮件标题

message.setText();邮件内容
  • **改造代码public R sendMsg(@RequestBody User user, HttpSession session)
/**
 * 发送验证码
 * @param user
 * @return
 */
@PostMapping("/sendMsg")
public R<String> sendMsg(@RequestBody User user,
                         HttpSession session){
    log.info("R<String> sendMsg()进来了");
    //获取手机号
    final String phone = user.getPhone();//就不修改实体类了把邮件写进 Phone
    
    //判断手机号不为空
    if(StringUtils.isNotEmpty(phone)) {
        //生成4位验证码
        final String code =
                ValidateCodeUtils.generateValidateCode(4).toString();
        System.out.println("==========");
        System.out.println(code);//验证码
        System.out.println("==========");
        //***************************************************/
        //创建简单邮件消息
        SimpleMailMessage message = new SimpleMailMessage();
        message.setFrom(MyFrom);//用自己的邮件发
        //谁要接收
        message.setTo(phone);
        //邮件标题
        message.setSubject("验证码");
        //邮件内容
        message.setText(code);//
        try {
            mailSender.send(message);
            //需要保存一下验证码,后面用来验证
            session.setAttribute(phone, code);
            return R.success("发送成功");
        } catch (MailException e) {
            e.printStackTrace();
            return R.error("短信发送失败");
        }
    }
    return R.error("短信发送失败");
}
  • 修改前端页面的正则表达式 把手机的改为邮件的
/^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(.[a-zA-Z0-9_-]+)+$/;

6d3f7f1.png)

验证代码:

在这里插入图片描述

  • 看验证码

在这里插入图片描述

在这里插入图片描述

完全一致 验证码发送成功

网站公告

今日签到

点亮在社区的每一天
去签到