springboot实现项目注册邮箱验证码的发送

在我们项目的注册业务模块中,我们一般会有邮箱验证这个部分(也可以采用短信验证,但阿里云和腾讯云的短信服务申请比较麻烦,所以我就以后端接口实现为例,写一写邮箱验证)。那我们如何实现呢?

这里我以QQ邮箱为例,首先我们打开QQ邮箱首页,点开设置

 点账户

 移到最下面,会有个开启服务,这里我们选择开启POP3/SMTP服务。

 在点开启后,会需要让你验证手机密保,我们只需要跟着验证就好了,验证完会有一个密匙,是一个一连串的英文字母组成的密匙。

这一步完成后。我们就打开我们的idea,引入相关依赖

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

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

引入完成之后,我们需要在springboot的配置文件中进行相关配置

这里我们就会用到刚才我们获取到的密匙,填到配置文件中

#邮件发送任务
spring.mail.password=//密匙
spring.mail.username=//你的邮箱
spring.mail.host=smtp.QQ.com //固定
#开启加密验证
spring.mail.properties.mail.smtp.ssl.enable=true //这个是一个加密配置

 我这里是以一个后端接口为例解释的

这一般都是一个post请求,所以我们用@PostMapping请求,填上我们的地址

@Apioperation只是一个Swagger的注解

Swagger是用来测试接口的Api的,有兴趣的伙伴可以去了解一下,并整合到Springboot中,这里我就不加赘述了。

RandomUtil是一个工具类,产生一个随机的六位有效数字,如果有需要的小伙伴可以私信我,我发给你,不过这里只是介绍邮箱发送的使用,所以我就不贴上该工具类的代码了,大家随便输入值都是可以的。

至于返回的JsonData,只是一个统一的与前端交互的数据格式,对我们的邮箱验证无影响。

这里我们可以借助redis对该验证码进行设置过期时间,通过redisTemplate对象进行设置,这里博主有点懒,就不提及了。不过还是需要提一点,在我们的项目中,一般该验证码都是需要设置过期时间的,也就是我们平常收到的验证码短信,有效期为××,这里可以借助于redis实现。我就懒得敲了,有兴趣的伙伴可以找我拿该段源码,我后面加了,但懒得改本博客了。

 由于我的方法写在了MsmService接口中,故我们到MsmService的实现类中实现该方法。

package com.liu.service.impl;

import com.liu.service.MsmService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.stereotype.Service;

/**
 * @author liuweixin
 * @create 2021-10-28 11:00
 */
@Service
public class MsmServiceImpl implements MsmService {
    @Autowired
    JavaMailSenderImpl mailSender;//注入JavaMailSenderImpl对象,这里需要注入对象
    @Override
    public void send(String email, String code) {
        SimpleMailMessage mailMessage = new SimpleMailMessage();//创建一个简单的邮件信息对象
        //设置邮件发送信息的内容
        mailMessage.setSubject("在线教育项目验证码");//标题
        mailMessage.setText("您的验证码为:" + code);//内容
        mailMessage.setFrom("");//内容为发送方的邮箱地址
        mailMessage.setTo(email);//内容为接收方邮箱地址
        mailSender.send(mailMessage);//发送邮件
    }
}

这里填写完成后,我们启动项目

 然后打开Swagger进行接口测试

地址为ip:端口号/swagger-ui.html(注意,这样测试需要集成Swagger才行,如果还不会的伙伴可以先写个页面表单,提交就可以了)

   

这里我就输入我自己的邮箱进行测试了。

  测试完成

然后我们到邮箱去查看一下

完成!

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot发送邮箱验证码可以通过使用 JavaMailSender 来实现。首先,你需要在 `application.properties` 或 `application.yml` 配置文件中配置邮件服务器的相关信息,如下所示: application.properties: ```properties spring.mail.host=your.mail.server spring.mail.port=your.mail.port spring.mail.username=your.username spring.mail.password=your.password spring.mail.properties.mail.smtp.auth=true spring.mail.properties.mail.smtp.starttls.enable=true ``` application.yml: ```yaml spring: mail: host: your.mail.server port: your.mail.port username: your.username password: your.password properties: mail: smtp: auth: true starttls: enable: true ``` 接下来,你可以创建一个邮件服务类来发送验证邮件,示例如下: ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.stereotype.Service; @Service public class EmailService { @Autowired private JavaMailSender javaMailSender; public void sendVerificationCode(String to, String code) { SimpleMailMessage message = new SimpleMailMessage(); message.setTo(to); message.setSubject("验证码"); message.setText("您的验证码是:" + code); javaMailSender.send(message); } } ``` 在上述示例中,`JavaMailSender` 是由 Spring Boot 自动配置的邮件发送器。你可以在需要发送验证码的地方调用 `sendVerificationCode` 方法来发送邮件。 注意:为了使用JavaMailSender,你需要在项目的依赖管理文件(例如 pom.xml)中添加相应的依赖。你可以添加以下依赖来使用 Spring Boot 提供的邮件支持: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency> ``` 以上就是使用 Spring Boot 发送邮箱验证码的简单示例。你可以根据自己的实际需求进行调整和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值