springboot中邮件发送

1.首先在pom.xml文件中添加依赖

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

2.去QQ邮箱中 设置-账户中开启pop3服务-生成授权码(授权码自己保密,不要泄露)
在这里插入图片描述
3.配置邮件类

/**
 * 邮件配置类
 */
@Configuration
public class Mailconfig {

    /**
     * @return 获取邮件发送实例
     */
    @Bean
    public MailSender mailSender(){
        JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
        //指定用来发送Emai的邮件服务器主机名
        mailSender.setHost("smtp.qq.com");
        //默认端口
        mailSender.setPort(587);
        //设置用户名
        mailSender.setUsername("xxx@foxmail.com");
        mailSender.setPassword("上一步开启pop3服务中的授权码");
        return mailSender;
    }
}

4.测试 fandBackPassword.html

<form action="" method="post">
    <div class="layadmin-user-login layadmin-user-display-show" id="LAY-user-login" style="display: none;">
        <div class="layadmin-user-login-main">
            <div class="layadmin-user-login-box layadmin-user-login-body layui-form">
                <div class="layui-form-item">
                    <label class="layadmin-user-login-icon layui-icon layui-icon-cellphone" for="yzm"></label>
                    <input type="text" name="email"  lay-verify="email" placeholder="请输入注册时的邮箱"
                           class="layui-input">
                </div>
                <div class="layui-form-item">
                    <div class="layui-row">
                        <div class="layui-col-xs7">
                            <label class="layadmin-user-login-icon layui-icon layui-icon-vercode" for="yzmBtn"></label>
                            <input type="text" name="yzm" id="yzm" placeholder="短信验证码"
                                   class="layui-input">
                        </div>
                        <div class="layui-col-xs5">
                            <div style="margin-left: 10px;">
                                <button  class="layui-btn layui-btn-primary layui-btn-fluid"
                                        id="yzmBtn" lay-submit="" lay-filter="sendEmail">获取验证码
                                </button>
                            </div>
                        </div>
                    </div>
                </div>
                <div class="layui-form-item">
                    <button class="layui-btn layui-btn-fluid" lay-submit lay-filter="submitForm">找回密码</button>
                </div>
            </div>
        </div>
    </div>
</form>

<script>
    layui.use('form', function () {
        var form = layui.form;
        form.on('submit(sendEmail)', function (data) { //传form进去 表单内容
            var email = data.field.email;
            console.log(email)
            //把验证码按钮disabled 防止重复乱发短信
            /*$("#yzmBtn").attr({"disabled": "disabled"})*/
            layer.msg("发送中....");
            $.post("user/sendEmail", {email: email}, function (result) {
                if (result.success) {
                    layer.msg("验证码已发送到你的邮箱,请注意查收,如长时间未收到邮件,请联系管理员", {
                        icon: 1,
                        time: 5000
                    }, function () {
                        $("#yzm").focus() //获得焦点
                    });
                } else {
                    layer.msg(result.errorInfo, {
                        icon: 5,
                        time: 5000
                    }, function () {
                        $("#yzmBtn").remove()
                    });
                }
            }, "json")
            return false;
        });

        //提交 监听
        form.on('submit(submitForm)', function (data) { //传form进去 表单内容
            var yzm = $("#yzm").val();//获得验证码的值
            console.log(yzm)
            if(yzm==''){
                layer.msg("请输入验证码")
                //把焦点放在验证码上
                $("#yzm").focus();
                return false;
            }
            $.post("user/checkYzm", {yzm: yzm}, function (result) {
                if (result.success) {
                    layer.msg("已通过验证,密码已经重置为123456,请登录后修改密码!", {
                        icon: 1,
                        time: 5000
                    }, function () {
                        parent.window.location.reload(); //刷新
                    });
                } else {
                    layer.msg(result.errorInfo, {
                        icon: 5,
                        time: 5000
                    });
                }
            }, "json")
            return false;
        });


    });
</script>
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200219223644849.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0MzczMjIz,size_16,color_FFFFFF,t_70)
控制器:
/**
     * 发送邮件
     *
     * @param session
     * @param email
     * @return
     */
    @ResponseBody
    @RequestMapping("/sendEmail")
    public Map<String, Object> sendEmail(String email, HttpSession session) {
        Map<String, Object> map = new HashMap<>();
        if (StringUtils.isEmpty(email)) {
            map.put("success", false);
            map.put("errorInfo", "邮箱不能为空");
            return map;
        }
        //验证邮件是否存在
        User userEmail = userService.findByEmail(email);
        if (userEmail == null) {
            map.put("success", false);
            map.put("errorInfo", "邮箱不存在");
            return map;
        }
        //获得六位验证码
        String mailCOde = Time.getSixCode();
        //发送邮件
        SimpleMailMessage message = new SimpleMailMessage();
        //发件人
        message.setFrom("xxxx@qq.com.com");
        //收件人
        message.setTo(email);
        //主题
        message.setSubject("用户找回密码");
        //正文内容
        message.setText("本次的验证码是:" + mailCOde);
        //发送
        mailSender.send(message);
        System.out.println(mailCOde);
        //把验证码存进session
        session.setAttribute("mailCode", mailCOde);
        //session.setMaxInactiveInterval(3);
        //把userId存进去  帮用户修改一个默认密码
        session.setAttribute("userId", userEmail.getUserId());
        map.put("success", true);
        return map;
    }

    /**
     * @param yzm     邮件验证码判断
     * @param session
     * @return
     */
    @ResponseBody
    @RequestMapping("/checkYzm")
    public Map<String, Object> check(String yzm, HttpSession session) {
        Map<String, Object> map = new HashMap<>();
        if (StringUtils.isEmpty(yzm)) {
            map.put("success", false);
            map.put("errorInfo", "验证码不能为空");
            return map;
        }
        //从session取出验证码
        String mailCode = (String) session.getAttribute("mailCode");
        String userId = (String) session.getAttribute("userId");
        if (!mailCode.equals(yzm)) {
            map.put("success", false);
            map.put("errorInfo", "验证码错误");
            return map;
        }
        /**
         *
         * 重置前先把用户信息查出来
         * 取出密码
         * 给用户重置密码为123456
         * 执行sql语句更新
         */
        User user = userService.getById(userId);
        user.setPassword(EncryptionUtil.md5("123456", EncryptionUtil.SALT));
        userService.updateById(user);
        map.put("success", true);
        return map;
    }


	/**
     * @return 生成六位验证码
     */
    public static String getSixCode(){
        Random random = new Random();
        String result="";
        for (int i=0;i<6;i++){
            result+=random.nextInt(10);
        }
        return result;
    }

	总体大概就是这样,有啥问题,大家一起留言加油。毕竟我也是萌新。大佬求带
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值