SpringBoot整合Mail发送邮件功能

目录
  • 前言
  • Maven依赖
  • 使用QQ邮箱演示
  • 发送普通邮件
  • 验证码案例

前言

我们在网站上注册账号的时候一般需要获取验证码,而这个验证码一般发送在你的手机号上还有的是发送在你的邮箱中,注册,账号密码…都需要用到验证,今天就演示一下如何用SpringBoot整合Mail发送邮箱。

Maven依赖

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

使用QQ邮箱演示

国内QQ邮箱的用户占多数,所以本文以QQ邮箱作为演示。

使用QQ邮箱需要开启SMTP服务

QQ邮箱默认关闭了SMTP服务,所以需要我们手动打开:

配置application.properties/yml

# 应用服务 WEB 访问端口
server.port=8080
# 邮箱用户名
spring.mail.username=your mail
# 授权码
spring.mail.password=授权码
# 邮箱主机
spring.mail.host=smtp.qq.com
# 开启SSL
spring.mail.properties.mail.smtp.ssl.enable=true
# 认证
spring.mail.properties.mail.smtp.auth=true
# 开启SSL安全模式
spring.mail.properties.mail.smtp.starttls.enable=true
# 必须启动SSL安全模式
spring.mail.properties.mail.smtp.starttls.required=true
# SSL Config
# 端口
spring.mail.port=465
# 协议
spring.mail.protocol=smtp
# 默认编码
spring.mail.default-encoding=UTF-8
# 套接字工厂端口
spring.mail.properties.mail.smtp.socketFactory.port=465
# 套接字工厂类
spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory

配置好这些后,springboot会自动帮我们配置好相关的邮件发送类。

发送普通邮件

@SpringBootTest
class Demo1ApplicationTests {

    @Autowired
    JavaMailSender javaMailSender;

    @Test
    public void sendSimpleMail() {
        // 构建一个邮件对象
        SimpleMailMessage message = new SimpleMailMessage();
        // 设置邮件主题
        message.setSubject("这是一封测试邮件");
        // 设置邮件发送者,这个跟application.yml中设置的要一致
        message.setFrom("1926585708@qq.com");
        // 设置邮件接收者,可以有多个接收者,中间用逗号隔开,以下类似
        // message.setTo("1*****@qq.com","2*****qq.com");
        message.setTo("1926585708@qq.com");
        // 设置邮件发送日期
        message.setSentDate(new Date());
        // 设置邮件的正文
        message.setText("这是测试邮件的正文");
        // 发送邮件
        javaMailSender.send(message);
    }
}

查看邮箱:

验证码案例

使用thymeleaf模板搭建HTML页面

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>验证码</title>
</head>
<body>

<div style="text-align: center">
    请输入您的邮箱:<input id="email" type="text"> <input id="getcode" type="button" value="获取验证码"><br>
    验证码:<input id="code" type="text"><br>
    <input id="check" type="button" value="验证"><br>
</div>

<script type="text/javascript" th:src="@{/js/jquery-3.6.0.js}"></script>
<script>
    //发送验证码
    $("#getcode").click(function () {
        var btn = $("#getcode");
        var time = 30;//定义时间变量。用于倒计时用
        var timer = null;//定义一个定时器;
        timer = setInterval(function(){///开启定时器。函数内执行
            btn.disabled = true;
            btn.val(time+"秒后重新获取");    //点击发生后,按钮的文本内容变成之前定义好的时间值。
            time--;//时间值自减
            if(time==0){     //判断,当时间值小于等于0的时候
                btn.val('重新获取验证码'); //其文本内容变成……点击重新发送……
                btn.disabled = false;
                clearInterval(timer); //清除定时器
            }
        },1000)
        $.post({
            url : "/getmailcode",
            data : {"mail":$("#email").val()},
            success : function (data) {
                alert("验证码已发送,请注意查收");
            }
        });
    })
    //检查验证码
    $("#check").click(function (){
        $.post({
            url: "/checkCode",
            data: {"code":$("#code").val()},
            success:function (data){
                if (data==0){
                    alert("验证码错误")
                }else {
                    alert("验证码正确")
                }
            }
        })
    })
</script>
</body>
</html>

效果:

定义Controller:

/**
 * 邮箱验证码
 */
@Controller
public class MailCodeController {

    @Autowired
    MailUtils mailUtils;

    /**
     * 验证页面
     *
     */
    @RequestMapping("/login")
    public String login(){
        return "login";
    }

    /**
     * 获取验证码
     * @param mail
     * @return
     */
    @PostMapping("/getmailcode")
    @ResponseBody
    public String getMailCode(String mail, HttpSession session){
        String mailCode = this.mailUtils.getMailCode(mail);
        System.out.println("获取到验证码:"+mailCode);
        session.setAttribute("code",mailCode);
        return "ok";
    }

    /**
     * 检查验证码
     * @param code
     * @return 1:正确 0:错误
     */
    @PostMapping("/checkCode")
    @ResponseBody
    public String checkCode(String code, HttpSession session){
        String checkCode = (String) session.getAttribute("code");
        if (checkCode!=null){
            if (code.equals(checkCode)){
                return "1";
            }else {
                return "0";
            }
        }
        return "0";
    }

}

MailUtils邮箱工具类:

@Component
public class MailUtils {

    @Autowired
    private JavaMailSender mailSender;

    public String getMailCode(String mail){
        Random random = new Random();
        String code="";
        for (int i=0;i<6;i++)
        {
            code+=random.nextInt(10);
        }
        //邮件设置1:一个简单的邮件
        SimpleMailMessage message = new SimpleMailMessage();
        message.setSubject("验证码消息");
        message.setText("您的验证码为 : 【 "+code+" 】");

        message.setTo(mail);
        message.setFrom("1926585708@qq.com");
        mailSender.send(message);
        return code;
    }
}

验证效果:

到此这篇关于SpringBoot整合Mail发送邮件的文章就介绍到这了,更多相关SpringBoot发送邮件内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • SpringBoot实现发送邮件任务

    本文实例为大家分享了SpringBoot实现发送邮件任务的具体代码,供大家参考,具体内容如下 1.pom中引入spring-boot-starter-mail <dependencies> <!--邮件--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> &

  • SpringBoot实现发送邮件功能过程图解

    首先创建一个邮箱账号,建议@126.com,@163.com,@qq.com 都可以 开启smtp,以下是使用图解: 创建SpringBoot项目导入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- 支持发送邮件 -->

  • SpringBoot发送邮件功能 验证码5分钟过期

    springBoot发送邮件(验证码,5分钟过期)超级详细,供大家参考,具体内容如下 自己百度了很久,终于成功了,这里记录一下过程 1.选择邮箱(这里选用163邮箱) 首先在网页登录在设置里面打开POP3/SMTP服务 在application.yaml中配置 要注意的就是这里的password是授权码而不是密码!!!如果使用qq邮箱把host改为smtp.qq.com 2.关于验证码的工具类 private static final String SYMBOLS = "0123456789&q

  • SpringBoot JavaMailSender发送邮件功能

    本文实例为大家分享了SpringBoot JavaMailSender发送邮件的具体代码,供大家参考,具体内容如下 引入Maven依赖包 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency> 163邮箱 application.properties

  • Springboot实现发送邮件

    本文实例为大家分享了Springboot实现发送邮件功能的具体代码,供大家参考,具体内容如下 第一章 背景介绍 1.1 使用场景 1.注册验证: 2.网站营销: 3.安全的最后一道防线: 4.提醒.监控警告: 5.触发机制. 1.2 邮件发送原理 1.邮件传输协议:SMTP协议和POP3协议 2.内容不断发展:IMAP和Mme协议 1.3 邮件发送流程 第二章 使用SpringBoot完成邮件发送 2.1 开发流程 2.2 开发简单文本邮件 2.2.1 引入相关jar包 在pom.xml中添加依

  • SpringBoot实现发送邮件功能

    背景 有个小伙伴问我你以前发邮件功能怎么弄的.然后我就给他找了个demo,正好在此也写一下,分享给大家. 理清痛点 发送邮件,大家可以想一下,坑的地方在哪? 我觉得是三个吧. 第一:邮件白名单问题. 第二:邮件超时问题. 第三:邮件带附件问题. 我下面的demo都会介绍这些问题及解决. 实现方案 准备工作 我们先要准备一个可以发送的邮箱,我这里以我的163邮箱为例,现在发送邮件的规则,要求你输入一种叫做授权码的东西,注意这个东西不是密码. 获取授权码的步骤: 当选择开启,通过验证之后就可以获取到

  • SpringBoot使用FreeMarker模板发送邮件

    本文实例为大家分享了SpringBoot +Mail+FreeMarker发送邮件,供大家参考,具体内容如下 通过spirngboot 自带的mail服务及FreeMarker模板引擎,发送邮 添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> </depen

  • SpringBoot整合Mail发送邮件功能

    目录 前言 Maven依赖 使用QQ邮箱演示 发送普通邮件 验证码案例 前言 我们在网站上注册账号的时候一般需要获取验证码,而这个验证码一般发送在你的手机号上还有的是发送在你的邮箱中,注册,账号密码-都需要用到验证,今天就演示一下如何用SpringBoot整合Mail发送邮箱. Maven依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-st

  • springboot整合mail实现邮箱的发送功能

    第一步添加mail的依赖 <!--引入mail的依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency> 第二步编写邮箱的 yml配置文件 spring: #邮箱配置 mail: host: smtp.qq.com userna

  • springboot 整合邮件发送功能

     pom依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency> 代码实现 import org.springframework.core.io.FileSystemResource; import org.springframework.mail

  • Springboot整合支付宝支付功能

    1.需要的Maven依赖 // 支付宝 <dependency> <groupId>com.alipay.sdk</groupId> <artifactId>alipay-sdk-java</artifactId> <version>4.8.73.ALL</version> </dependency> 2.controller层 /** * 统一下单接口 * @param orderNo 订单号 * @para

  • Springboot整合第三方登录功能的实现示例

    springboot 项目的pom文件引入依赖 <dependency> <groupId>me.zhyd.oauth</groupId> <artifactId>JustAuth</artifactId> <version>{latest-version}</version> </dependency> 代码 登录端点(controller) import com.tarzan.cms.common.prop

  • Springboot整合pagehelper分页功能

    本文实例为大家分享了Springboot整合pagehelper分页展示的具体代码,供大家参考,具体内容如下 一.添加依赖 查找maven中pagehelper的版本 在pom中添加依赖 <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.2.2&

  • SpringBoot整合微信登录功能的实现方案

    目录 1. OAuth2解决什么问题? 2. 微信扫描登录 2.1 添加必要的依赖 2.2 application.properties 添加配置 2.3 登录请求 2.4 前端 1. OAuth2解决什么问题? OAuth2:是针对特定问题一种解决方案 可以解决两个问题: a. 开放系统间授权 b. 分布式访问问题 解决方案: a. 方式一:用户名密码复制 b. 通用开发者key c. 办法令牌 2. 微信扫描登录 点击进行注册开发者认证 JWT配置 2.1 添加必要的依赖 <!--httpc

  • JavaWeb中使用JavaMail实现发送邮件功能实例详解

    现在很多的网站都提供有用户注册功能, 通常我们注册成功之后就会收到一封来自注册网站的邮件.邮件里面的内容可能包含了我们的注册的用户名和密码以及一个激活账户的超链接等信息.今天我们也来实现一个这样的功能,用户注册成功之后,就将用户的注册信息以Email的形式发送到用户的注册邮箱当中,实现发送邮件功能就得借助于JavaMail了. 一.搭建开发环境 1.1.创建Web项目 1.2.用户注册的Jsp页面 register.jsp <%@ page language="java" pag

  • SpringBoot整合JavaMail通过阿里云企业邮箱发送邮件的实现

    JavaMail是Java开发中邮件处理的开源类库,支持常用协议如:SMTP.POP3.IMAP 一.SpringBoot整合 1.需要在pom文件中添加依赖spring-boot-starter-mail <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependenc

随机推荐