将阿里云短息服务替换成邮箱短息

学习验证码发送

在学习使用阿里云短息发送服务的时候,由于还是学生,注册开通阿里云短息服务需要很多材料,注册流程比较繁琐,而且会产生一定费用。


于是采用邮箱短息来发送验证码的发送,替代阿里云手机短息发送。
以下是实现方法:
第一步:在pom文件中引入依赖

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

第二步:在properties文件中进行相关配置

# 163邮箱的地址为smtp.163.com,直接填写即可
spring.mail.host=smtp.163.com
# 你申请的163邮箱
spring.mail.username=
# 注意密码是在开启smtp/pop3时自动生成的,不是邮箱密码,记得保存一下,不然就找不到了
spring.mail.password=

第三步:写controller代码

public class EmailController {
    @Autowired
    privateEmailService emailService;
    @Autowired
    private RedisTemplate<String,String> redisTemplate;

    @GetMapping("send/{email}")
    public R sendMsm(@PathVariable String email) {
        // 先从redis中看看有没有验证码
        String code = redisTemplate.opsForValue().get(email);
        if (!StringUtils.isEmpty(code)) {
            return R.ok();
        }
        emailService.sendVerifyCode(email);
        return R.ok();
    }
}

第四步:写service代码,这里内容可以按需修改。

public class EmailServiceImpl implements EmailService {
    @Resource
    private JavaMailSender sender;
    @Value("${spring.mail.username}")
    private String email;
    @Autowired
    private RedisTemplate<String,String> redisTemplate;

    @Override
    public void sendVerifyCode(String mail) {
        SimpleMailMessage message = new SimpleMailMessage();
        //邮件标题
        message.setSubject("【xxx网站】您的注册码");
        //设置随机数作为验证码
        String code = RandomUtil.getFourBitRandom();
        // 把验证码放入redis中并且设置过期时间为5分钟
        redisTemplate.opsForValue().set(mail,code,5, TimeUnit.MINUTES);
        //邮件内容
        message.setText("您的验证码是:"+code+",五分钟有效,请及时完成注册。若不是本人操作请忽略");
        //谁发送,必须和配置文件中的账号一致
        message.setFrom(email);
        //谁接收
        message.setTo(mail);
        sender.send(message);
    }
}

这里面我还使用redis设置了验证码过期时间的功能,如果不需要可以删除相关redis代码即可。
2025-12-07 13:40:37 星期日 Chools

posted @ 2025-12-07 13:42  chools  阅读(3)  评论(0)    收藏  举报