springboot实现发送邮箱验证码

准备工作

在邮箱官网开放SMTP授权,获取相应密钥,才可以进行发送邮件

这里以网易163邮箱为例,登录邮箱后,依次点击“设置-POP3/SMTP/IMAP” ,然后开启SMTP服务。这时候会提示一个授权码,例如:HMASDWFASCZSMTAS,一定要记下来,一会会用到

springboot实现发送邮箱验证码_第1张图片

springboot实现发送邮箱验证码_第2张图片


实现步骤 

第一步、在pom.xml中添加邮箱依赖

        
        
            org.springframework.boot
            spring-boot-starter-mail
        

第二步、在application.yml中配置邮箱连接信息

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

第三步、新建一个工具类,用于生成6位数的随机数

/**
 * 字符处理工具
 */
public class CharUtil {

    /**
     * 随机数6位生成
     * @return
     */
    public static String randomVerify () {
        Random random = new Random();
        String result = "";
        for (int i=0; i<6; i++)
        {
            result += random.nextInt(10);
        }
        return result;
    }
}

第四步、新建一个controller接口类(核心)即可实现发送邮件

@RestController
@RequestMapping("/mail")
public class MailVerifyController {

    @Autowired
    private JavaMailSender mailSender;

    //	获得发件人信息
    @Value("${spring.mail.username}")
    private String from;

    /**
     * 发送邮件验证码
     * @param mail 发送的邮箱
     * @return
     */
    @PostMapping("/send")
    public Result save(@RequestParam String mail) {

        // 获取随机6位验证码
        String verify = CharUtil.randomVerify();

        SimpleMailMessage message = new SimpleMailMessage();
        // 发送邮箱
        message.setFrom(from);
        // 接受邮箱
        message.setTo(mail);
        // 标题
        message.setSubject("测试服务平台-邮箱验证");
        // 内容
        message.setText("

尊敬的用户您好:


" + "
您正在进行邮箱验证,本次验证码为:" + verify + ",请在10分钟内进行使用。
" + "
如非本人操作,请忽略此邮件,由此给您带来的不便请谅解!
--测试服务平台
"); try{ // 发送邮件 mailSender.send(message); return Result.success(200,"验证码发送成功"); } catch (Exception e) { return Result.success(404,"验证码系统发送失败,请检查邮箱账号是否正确!",e); } } }

效果图 

 springboot实现发送邮箱验证码_第3张图片

你可能感兴趣的:(springboot,spring,boot,java,spring)