首页 > 其他分享 >SpringBoot项目 制作邮箱 验证码发送(163)

SpringBoot项目 制作邮箱 验证码发送(163)

时间:2024-05-24 19:29:37浏览次数:20  
标签:SpringBoot spring redis 验证码 String 邮箱 mail 163

 

1. 邮箱授权码获取

  邮箱 --> 设置 --> POP3/SMTP/IMAP --> 开启服务(POP3/SMTP服务) --> 授权码

 

  开启并获取后 将 授权码保存下来。

2. 项目 导入依赖

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

        <!-- redis -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

3. 配置文件

 .yml格式

# Spring配置
spring:
  # redis 配置
  redis:
    # 地址
    host: (redis地址)
    # 端口,默认为6379
    port: 6379
    # 数据库索引
    database: 0
    # 密码
    password: (redis连接密码)
    # 连接超时时间
    timeout: 10s
    lettuce:
      pool:
        # 连接池中的最小空闲连接
        min-idle: 0
        # 连接池中的最大空闲连接
        max-idle: 8
        # 连接池的最大数据库连接数
        max-active: 8
        # #连接池最大阻塞等待时间(使用负值表示没有限制)
        max-wait: -1ms

# 163 邮箱
  mail:
    host: smtp.163.com(此处是我的163)
    port: 465
    username: (邮箱账户)
    password: (授权码)
    properties:
      mail:
        smtp:
          auth: true
          starttls:
            enable: true
            required: true
          ssl:
            enable: true

 .properties格式 

# application.properties 
spring.mail.host=smtp.163.com  
spring.mail.port=587  
spring.mail.username=(邮箱号)
spring.mail.password=(授权码)  
spring.mail.properties.mail.smtp.auth=true  
spring.mail.properties.mail.smtp.starttls.enable=true

 

 注意:

  • host:是SMTP服务器,不是IP地址;
  • username:是邮箱号,不是用户名;
  • password:是授权码,不是密码;

4. 代码实现

 (1) EmailService 邮件服务类

/**
 * 邮箱邮件服务类
 */
@Service
public class EmailService {

    @Autowired
    private JavaMailSender mailSender;

    /**
     * 发送邮件信息
     * @param toEmail 接收邮箱地址
     * @param verificationCode 验证验证码
     */
    public void sendVerificationEmail(String toEmail, String verificationCode) {
        SimpleMailMessage message = new SimpleMailMessage();
        message.setFrom("[email protected]");   // 发件人发起地址
        message.setTo(toEmail); // 收件人地址
        message.setSubject("xxx系统:");   // 邮件主题
        message.setText("您正在完善个人私密信息,验证码: " + verificationCode + ",请勿泄露邮箱密码。"); // 邮件正文(包含验证码)
        mailSender.send(message);   // 发送
    }
}

 (2) LoginController 接口类

import java.util.Map;

/**
 * 登录
 */
@RestController
@RequestMapping("/user_login")
public class LoginController {

    @Autowired
    private EmailService emailService;

    @Autowired
    private JxRedisCache redisCache;

    /**
     * 邮箱验证码发送
     * @param request 以 userEmail为键获取值
     * @return 成功 ? 失败
     */
    @PostMapping("/email_code")
    public AjaxResult sendEmailCode(@RequestBody Map<String, String> request) {
        String userEmail = request.get("userEmail");
        String code = generateVerificationCode();
        try {
            emailService.sendVerificationEmail(userEmail, code);
            // 验证码存储与redis
            redisCache.setCacheObject("email:" + userEmail, code);
            return AjaxResult.success("邮箱验证码发送成功");
        }catch (Exception e){
            return AjaxResult.error("邮箱验证码发送失败");
        }
    }

    /**
     * 生成 6位数 验证码
     */
    private String generateVerificationCode() {
        // 实现生成验证码的逻辑,生成6位数字验证码
        return String.valueOf((int)(Math.random() * 900000) + 100000);
    }
}

 (3) 测试

 

 

标签:SpringBoot,spring,redis,验证码,String,邮箱,mail,163
From: https://www.cnblogs.com/warmNest-llb/p/18206857

相关文章

  • SpringBoot系列---【】
    1.报错信息18:11:03.812[main]ERRORorg.springframework.boot.SpringApplication-Applicationrunfailedorg.yaml.snakeyaml.error.YAMLException:java.nio.charset.MalformedInputException:Inputlength=1 atorg.yaml.snakeyaml.reader.StreamReader.update(Strea......
  • SpringBoot中设置静态资源映射路径
    这里写目录标题一、系统默认静态资源路径二、静态资源不在默认目录,需要配置1.方法一:通过配置类设置(java代码实现)2.方法二:application.yml配置3.方法三:application.properties配置一、系统默认静态资源路径默认情况下,SpringBoot会从以下位置自动serve静态资源:c......
  • 百度文库最新AI旋转验证码识别代码
    上个月发现百度文库最新出了一个验证码,是AI生成的。内容每次可能都不一样,所以给识别造成了很大困难。传统的比对放松完全失效。一、介绍这个是最近才出的最新验证码,内容主要以工厂、建筑、山峰、机器人、汽车、盆栽植物等为主。如下图所示优点:解决了图片种类有限的问题,AI......
  • Springboot Tomcat 架构及参数优化
    1.SpringbootTomcat架构及参数优化1.1.版本说明1.2.SpringBootTomcat架构分析1.2.1.Tomcat核心组件类图1.2.2.Tomcat核心组件架构图1.3.SpringBootTomcat工作流程1.3.1.SpringBoot初始化Tomcat流程1.3.2.Tomcat启动流程1.3.2.1.初始化Server......
  • springboot集成kafka解决集群模式下分组ID不同问题
    背景:在集群模式下,每个实例需要分组ID不同,共同消费某个topic,集群下的实例是动态扩展的,无法确认实例的个数,每次项目启动的时候,需要动态的给定kakfa的分组ID,但是分组ID整体是一样的,不能改变。方式1:CURRENT_INSTANCE_GROUP_ID=KafkaConstant.SSE_GROUP.concat(String.valueOf(Sys......
  • 京东面试:SpringBoot同时可以处理多少请求?
    SpringBoot作为Java开发中必备的框架,它为开发者提供了高效且易用的开发工具,所以和它相关的面试题自然也很重要,咱们今天就来看这道经典的面试题:SpringBoot同时可以处理多少个请求?准确的来说,SpringBoot同时可以处理多少个请求,并不取决于SpringBoot框架本身,而是取决于其内......
  • 麒麟系统下springboot程序开机自启动
    1、编写脚本放置到/etc/systemed/system目录下例如display.service[Unit]Description=display#Documentation=http://www.baidu.com#Requires=network.targetAfter=network.targetelasticsearch.serviceredis.servicemysql.server.service[Service]Type=forkingEn......
  • JAVA计算机毕业设计基于SpringBoot的疫苗接种管理系统(附源码+springboot+开题+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着全球范围内新冠疫情的爆发和持续,疫苗接种成为了防控疫情的重要手段。然而,疫苗接种的管理涉及到众多的环节和人员,如何有效地管理和跟踪接种者的接......
  • JAVA计算机毕业设计基于SpringBoot的窈窕之求食单平台的设计与实现(附源码+springboot+
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着生活节奏的加快和人们健康饮食意识的提升,越来越多的消费者开始关注菜谱的选择和制作。然而,市场上缺乏一个统一的、便捷的在线平台,用于提供丰富的......
  • 基于SpringBoot+Vue的在线教育平台
    !!!有需要的小伙伴可以通过文章末尾名片咨询我哦!!! ......