SpringBoot整合QQ邮箱发送验证码

这篇具有很好参考价值的文章主要介绍了SpringBoot整合QQ邮箱发送验证码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.项目介绍

基于SpringBoot + QQ邮箱服务 + Hutools实现的获取验证码功能,接下来从如何申请授权码,如何配置项目,如何启动项目,如何测试项目进行讲解,下面的图片是一个测试案例,使用postman进行测试,在测试上填写发送人的邮箱,即可收到验证码邮箱

SpringBoot整合QQ邮箱发送验证码,工具专栏,spring boot,lua,后端,网易邮箱大师

2.使用前提

1.从仓库拉取代码

2.需要申请邮箱的授权码,然后在application.yml下进行配置

3.邮箱授权码申请

1.开启POP3/SMTP服务

SpringBoot整合QQ邮箱发送验证码,工具专栏,spring boot,lua,后端,网易邮箱大师

点击设置,进入下面的页面,然后再点击账号

SpringBoot整合QQ邮箱发送验证码,工具专栏,spring boot,lua,后端,网易邮箱大师

往下滑,找到下面的服务,点击申请授权码,按照提示一步步完成

SpringBoot整合QQ邮箱发送验证码,工具专栏,spring boot,lua,后端,网易邮箱大师

2.复制授权码

SpringBoot整合QQ邮箱发送验证码,工具专栏,spring boot,lua,后端,网易邮箱大师

4.项目使用说明

1.可以自己手写代码,也可以从我的仓库直接拉取代码

2.配置application配置文件,修改username改为自己的邮箱,password改为邮箱授权码,详细介绍查看代码说明下的配置文件

3.启动项目SendemailcodeApplication

4.使用postman进行测试

1.拉取仓库代码:

git clone https://gitee.com/tzmoxi/use-email-getcode.git

2.修改配置文件

修改application.yml下的配置文件,修改成为自己的邮箱和授权码

SpringBoot整合QQ邮箱发送验证码,工具专栏,spring boot,lua,后端,网易邮箱大师

3.修改完成上面的内容,就直接启动项目

SpringBoot整合QQ邮箱发送验证码,工具专栏,spring boot,lua,后端,网易邮箱大师

4.使用postman测试

首先是get请求,填写请求地址localhost:8080/user/getCode,传递的参数为tos值为接收方邮箱,点击发送即可收到

SpringBoot整合QQ邮箱发送验证码,工具专栏,spring boot,lua,后端,网易邮箱大师

点击发送,成功后,邮箱会收到一个验证码

SpringBoot整合QQ邮箱发送验证码,工具专栏,spring boot,lua,后端,网易邮箱大师

5.代码说明

1.创建一个SpringBoot工程

2.引入邮件相关依赖

注意:springboot相关的依赖给去掉了,在创建工程的时候会自动引入

<dependencies>
        <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.24</version>
            <scope>provided</scope>
        </dependency>


        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.8.16</version>
        </dependency>


        <!--   发送邮件     -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.12.0</version>
        </dependency>

        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <scope>runtime</scope>
        </dependency>
    </dependencies>

3.配置application.yml文件

username和password需要使用自己的

username事自己的qq邮箱

password是刚昂申请的邮箱授权码

Spring:
  # 邮箱基本配置
  mail:
    host: smtp.qq.com
    # 填写自己的邮箱
    username: 111111111111@qq.com
    # 在邮箱内填写自己申请的授权码
    password: aaaaaaaaaaaa
    # 端口号
    port: 587
    # 默认的邮件编码为UTF-8
    default-encoding: UTF-8
    # 其他参数
    properties:
      mail:
        # 配置SSL 加密工厂
        smtp:
          ssl:
            # 本地测试, 先放开ssl
            enable: false
            required: false
          #开启debug模式,这样邮件发送过程的日志会在控制台打印出来,方便排查错误
        debug: false
server:
  port: 8080

4.定义实体类

@Data
@AllArgsConstructor
public class ToEmail implements Serializable {

   //邮件接受方

    private String tos;

   //邮件主题

    private String subject;


   //邮件内容

    private String content;
}

5.邮件服务也是核心

public class MailService {
    /**
     * 注入邮件工具类
     */
    @Resource
    private JavaMailSenderImpl javaMailSender;

    @Value("${spring.mail.username}")
    private String sendMailer;

    /**
     * 检测邮件信息类
     * @param receiveEmail 接收者
     * @param subject  主题
     * @param emailMsg 内容
     */
    private void checkMail(String receiveEmail, String subject, String emailMsg){
        //  StringUtils 需要引入  commons-lang3 依赖
        //  可以用 receiveEmail == null || receiveEmail.isEmpty() 来代替
        if(StringUtils.isEmpty(receiveEmail)) {
            throw new RuntimeException("邮件收件人不能为空");
        }
        if(StringUtils.isEmpty(subject)) {
            throw new RuntimeException("邮件主题不能为空");
        }
        if(StringUtils.isEmpty(emailMsg)) {
            throw new RuntimeException("邮件内容不能为空");
        }
    }
    
    /**
     * 发送纯文本邮件
     * @param receiveEmail 接收者
     * @param subject  主题
     * @param emailMsg 内容
     */
    public Boolean sendTextMail(String receiveEmail, String subject, String emailMsg) {
        // 参数检查
        checkMail(receiveEmail, subject, emailMsg);
        try {
            // true 代表支持复杂的类型
            MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(javaMailSender.createMimeMessage(), true);
            // 邮件发件人
            mimeMessageHelper.setFrom(sendMailer);
            // 邮件收件人
            mimeMessageHelper.setTo(receiveEmail.split(","));
            // 邮件主题
            mimeMessageHelper.setSubject(subject);
            // 邮件内容
            mimeMessageHelper.setText(emailMsg);
            // 邮件发送时间
            mimeMessageHelper.setSentDate(new Date());
    
            // 发送邮件
            javaMailSender.send(mimeMessageHelper.getMimeMessage());
            System.out.println("发送邮件成功: " + sendMailer + "-->" + receiveEmail);
            return true;
        } catch (MessagingException e) {
            e.printStackTrace();
            System.out.println("发送邮件失败: " + e.getMessage());
            return false;
        }
    }
}

6.编写控制层

@RestController
@RequestMapping("/user")
public class EmailController {

    @Resource
    private MailService mailService;

    @RequestMapping("/getCode")
    public R sendEmail(ToEmail toEmail, HttpServletRequest request) {
        if(toEmail == null || toEmail.getTos() == null ) {
            return R.error( "参数错误!");
        }
        toEmail.setSubject("你本次的验证码是");
        // 使用hutools工具获取验证码
        CircleCaptcha captcha = CaptchaUtil.createCircleCaptcha(200, 100, 4, 20);
        String verCode = captcha.getCode();
        String content = "尊敬的xxx,您好:\n"
                + "\n本次请求的邮件验证码为:" + verCode + ",本验证码 5 分钟内效,请及时输入。(请勿泄露此验证码)\n"
                + "\n如非本人操作,请忽略该邮件。\n(这是一封通过自动发送的邮件,请不要直接回复)";
        toEmail.setContent(content);

        Boolean check = mailService.sendTextMail(toEmail.getTos(), toEmail.getSubject(), toEmail.getContent());
        if(check) {
            return R.success("发送成功");
        } else {
            return R.error( "发送失败");
        }

    }
}

6.Git仓库地址

基于SpringBoot实现邮箱发送验证码仓库地址

更多内容查看:
SpringBoot整合QQ邮箱发送验证码,工具专栏,spring boot,lua,后端,网易邮箱大师文章来源地址https://www.toymoban.com/news/detail-731299.html

到了这里,关于SpringBoot整合QQ邮箱发送验证码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Springboot整合Mail进行邮箱验证码注册

    Spring Mail的配置信息,用于设置邮件发送相关参数。 host : SMTP服务器的地址,这里使用QQ邮箱的SMTP服务器地址。 port : SMTP服务器监听的端口,默认为25,但QQ邮箱SMTP服务器采用SSL加密传输需要使用465端口。 username : 发送邮件的邮箱账号,这里填写QQ邮箱的账号。 password : 发送邮

    2024年02月08日
    浏览(47)
  • SpringBoot整合邮箱验证码实现用户注册

    唠嗑部分 今天我们来分享一下在系统开发过程中,如何使用验证码来验证用户并完成用户注册 首先来看一下成品界面展示 说一下以上注册功能的设计: 用户手动输入用户名(全数据库唯一)、密码、确认密码、邮箱地址(单个邮箱最多可注册3个用户)、正确的邮箱验证码,即可

    2024年02月08日
    浏览(61)
  • Linux通过QQ邮箱账号使用mailx发送邮件

      打开QQ邮箱的“设置”——“账号”,如下:   点击此处的“管理服务”,即可申请邮箱的授权码。   编辑mail的配置文件:   在 mail.rc 最下方添加如下代码:   创建证书路径   创建qq.crt   设置qq.crt   进入/root/.certs/目录   继续设置

    2024年02月08日
    浏览(50)
  • python 学习笔记(5)——SMTP 使用QQ邮箱发送邮件

    目录 发送邮件 1、准备工作: 2、发送纯文本信息内容: 3、发送 HTML 格式的内容: 4、发送带附件的邮件: 5、群发(一个邮件,发给多个人):         以下都 以 QQ邮箱 为发送方举例;   1、准备工作:          使用 QQ邮箱发送邮件,需要到 “ 设置 ”=“ 账号 ”

    2024年02月09日
    浏览(52)
  • 足够详细的java邮件发送功能(基于QQ邮箱,包含踩过的坑及解决办法!!)

      由于公司最近有业务需求,需要实现批量发送邮件到指定邮箱的功能,就写了一个小的工具类,开发过程中经历了踩坑然后优化,感觉这个功能还是有些细节还是要注意的,值得写文记录一下,有在开发中碰到相同问题的各位朋友可以参考一下,希望对各位能有所帮助!

    2024年02月07日
    浏览(59)
  • Springboot mail使用QQ邮箱错误汇总

    目录 1、QQ邮箱的SMTP服务器端口与相关yml配置 2、错误汇总 1、javax.mail.MessagingException: Got bad greeting from SMTP host: smtp.qq.com, port: 465, response: [EOF] 2、javax.net.ssl.SSLException: Unsupported or unrecognized SSL message. Failed messages: javax.mail.MessagingException: Could not connect to SMTP host: smtp.qq.com, port: 25;

    2024年02月04日
    浏览(48)
  • facenet, dlib人脸识别,人体检测,云数据库mysql,QQ邮箱,手机验证码,语音播报

    目录 部分代码展示:  录入部分 识别部分​编辑  活体检测部分​编辑  同步到云数据库MySQL  其他操作 部分图片展示: 完整代码加ui链接: 涉及到的一些知识点的文章  活体检测超过三次的人员禁止识别(后面可通过管理员接触) 管理员登录和人脸录入需要手机验证码,

    2024年02月08日
    浏览(78)
  • 使用邮箱发送验证码前端完成登录

    在前一篇使用C#发送邮箱验证码已经完成使用.net core web api写了完成往登录邮箱发送验证码的接口。现在就用前端调用接口模拟登录功能。 前端使用是layui样式+Vue写的功能。 记得把 div id = \\\"app\\\"/div 把前端样式包含 右侧那验证码是缓存中的验证码,一般是看不见的。 前端调用

    2024年01月19日
    浏览(63)
  • 个人商城系统开源(发送邮箱验证码!)

    原文地址:个人商城系统开源(发送邮箱验证码!) - Pleasure的博客 下面是正文内容: 由于近期实在没有什么话题可写和一些有趣的项目教程可以分享。所以我只能决定将我自己亲手编写的一个迷你迷你商城系统进行开源。 也就是放在我博客右边的“我的另一个网站”(由

    2024年03月08日
    浏览(52)
  • QQ 邮箱使用 SMTP 发送邮件报错:550 The From header is missing or invalid

    QQ 邮箱使用 SMTP 发送邮件报错: 550 The From header is missing or invalid : 源码( pthon 3.12 ) 看到 QQ 邮箱对 header 中的 from 有合法性校验,我们的字段格式符合要求,怀疑是字符编码问题。 通过打印封装的 message 查看我们的 From 字段乱码,去掉 utf-8 编码。 再次测试,正常发送邮件

    2024年04月16日
    浏览(85)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包