springboot实现邮箱发送验证码

学习目标:

上一篇文章用到了阿里云的短信服务这个服务是需要付费且个人用户不容易申请,还有没有其他能收到验证码并且免费的,然后我就想到了QQ邮箱接收信息,


准备工作:

  1. 设置在授权码(QQ邮箱->设置->账户 找到【POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务】,点击【生成授权码】)

开始编码:

第一步导入依赖

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

在yml文件配置

 #配置邮件消息
 spring:
   mail:
     host: smtp.qq.com   //指定用来发送Email的邮件服务名
     username:          //设置用户名(QQ邮箱全名)
     password:  		//生成授权码
     default-encoding: UTF-8

编写实现发送代码

package com.example.shiro.sys.controller;

import com.example.shiro.sys.common.Result.R;
import com.example.shiro.sys.service.MsgSendService;
import com.example.shiro.sys.utlis.RedisUtil;
import com.example.shiro.sys.utlis.smsSend.RandomUtil;
import lombok.RequiredArgsConstructor;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.mail.internet.MimeMessage;

/**
 * @Author:szm
 * @Date: 2022/4/28
 */
@RestController
@RequestMapping("/sys/send")
@RequiredArgsConstructor
public class MsgSendController {
    private final JavaMailSender mailSender; //注入QQ发送邮件的bean
    /**
     * 给qq邮箱发送消息
     */
    @GetMapping("/qqMsgSend")
    public R qqMsgSend(String qq,String msg){
        try {
            MimeMessage mimeMessage = this.mailSender.createMimeMessage();
            MimeMessageHelper message = new MimeMessageHelper(mimeMessage);
            message.setFrom("设置发件qq邮箱");//设置发件qq邮箱
            qq+="@qq.com";
            message.setTo(qq);	//设置收件人
            message.setSubject("验证码");	//设置标题
            message.setText(msg);  	//第二个参数true表示使用HTML语言来编写邮件
            this.mailSender.send(mimeMessage);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        return R.ok();
    }
}

最后也是获取到了,我测试用的是swagger-ui
springboot实现邮箱发送验证码_第1张图片

你可能感兴趣的:(intellij-idea,spring,boot,java,后端)