SpringBoot实现邮箱发送验证码(QQ,163等同理)

准备工作(依赖和yml文件的配置)

我们要远程操纵邮箱就需要获得每个邮箱的密钥:

1.先进入你的qq邮箱:

在这里插入图片描述

2.进入用户设置

在这里插入图片描述

3.开启POP3和SMTP服务(这里我已经开启过了)

在这里插入图片描述

开启时它会让你发送一个短信,发送成功过后它会给你一个密钥,这个一定要记好,记好,记好!!!(不要泄露)
这个就是后面要在yml文件中配置的账号秘钥

<!--  SpingBoot的版本采用2.4.0-->
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.4.0</version>
    <relativePath/>
  </parent>
  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- Spring Mail依赖 -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-mail</artifactId>
    </dependency>
  </dependencies>
# 端口号
server:
  port: 8081
# e-mail
spring:
  # 发送邮件配置
  # 发送邮件相关配置
  mail:
    host: smtp.qq.com # 此处使用的是qq邮箱进行邮件发送
    username: ——————————@qq.com # 发送邮件的账号(也就是本人账号)
    password: ———————————— # 账号秘钥(注意这不是登录你QQ邮箱的密码!该秘钥在开启SMTP服务时会给出。)
    default-encoding: UTF-8 #编码风格

邮件的发送代码

1.新建1个Controller类

@RestController
public class EmailController {
    @Autowired(required = false)
    private JavaMailSender sender; // 引入Spring Mail依赖后,会自动装配到IOC容器。用来发送邮件
    @GetMapping("/test")
    public String test1(){
        String code = "6666";// 验证码
        SimpleMailMessage message = new SimpleMailMessage();
        message.setSubject("【测试验证码】验证消息"); // 发送邮件的标题
        message.setText("登录操作,验证码:"+ code + ",切勿将验证码泄露给他人,本条验证码有效期2分钟。"); // 发送邮件的内容
        message.setTo("_______@qq.com"); // 指定要接收邮件的用户邮箱账号
        message.setFrom("_______@qq.com"); // 发送邮件的邮箱账号,注意一定要和配置文件中的一致!
        sender.send(message); // 调用send方法发送邮件即可
        return "放送成功";
    }
}

启动项目进行测试
在这里插入图片描述
检查看邮箱是否收到了
在这里插入图片描述
成功!!!

补充

当然作者并不是就只是试了1次就成功了,我大概试了1天左右,同时也在CSDN找了很久的教程,跟着他们的走了很多次,经历了很多次报错,其中最多的就是NullPointException也就是大家常见的空指针异常,也就是图中画的地方。
在这里插入图片描述
这里一定要用Autowired注入
在这里插入图片描述

最后在这里我不建议大家去在SpringBoot中写个测试类去测试这个邮箱发送功能,会报很多异常(jar包不匹配,空指针等…),因此,在这里我演示的就是在Controller层中写,通过Postman进行接口测试,这样会减少大家很多的报错,节约时间。

  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 11
    评论
好的,我可以帮您解答这个问题。您可以使用 Flask-Mail 扩展和 QQ 邮箱 SMTP 服务器来实现发送验证码的功能。具体步骤如下: 1. 安装 Flask-Mail 扩展 您可以使用 pip 工具在命令行中运行以下命令来安装 Flask-Mail 扩展: ``` pip install Flask-Mail ``` 2. 配置 Flask-Mail 在 Flask 应用程序中,您需要配置 Flask-Mail 扩展。以下是一个配置示例: ``` from flask import Flask from flask_mail import Mail app = Flask(__name__) app.config['MAIL_SERVER'] = 'smtp.qq.com' app.config['MAIL_PORT'] = 465 app.config['MAIL_USE_SSL'] = True app.config['MAIL_USERNAME'] = 'your_qq_email@qq.com' app.config['MAIL_PASSWORD'] = 'your_qq_email_password' mail = Mail(app) ``` 请替换示例中的 `MAIL_USERNAME` 和 `MAIL_PASSWORD` 为您自己的 QQ 邮箱账号和密码。 3. 实现发送验证码的功能 您可以在 Flask 应用程序中编写一个路由来实现发送验证码的功能。以下是一个示例代码: ``` from flask import Flask, jsonify, request from flask_mail import Message import random app = Flask(__name__) # 配置 Flask-Mail 扩展 app.config['MAIL_SERVER'] = 'smtp.qq.com' app.config['MAIL_PORT'] = 465 app.config['MAIL_USE_SSL'] = True app.config['MAIL_USERNAME'] = 'your_qq_email@qq.com' app.config['MAIL_PASSWORD'] = 'your_qq_email_password' mail = Mail(app) # 发送验证码路由 @app.route('/send_code', methods=['POST']) def send_code(): # 获取接收验证码邮箱地址 email = request.form.get('email') # 生成验证码 code = str(random.randint(100000, 999999)) # 发送邮件 msg = Message('验证码', sender=app.config['MAIL_USERNAME'], recipients=[email]) msg.body = '您的验证码为:' + code mail.send(msg) return jsonify({'code': code}) ``` 在上述示例代码中,我们通过 POST 请求的方式传递需要发送验证码邮箱地址,然后使用 `random` 模块生成 6 位随机数作为验证码,然后用 Flask-Mail 扩展将验证码发送到指定的邮箱地址。 以上就是使用 Flask-Mail 扩展和 QQ 邮箱 SMTP 服务器实现发送验证码的步骤。希望对您有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱敲键盘的程序源

你的激励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值