spring boot整合发邮件

简介: spring boot整合发邮件

文章目录


代码展示

导入依赖

增加配置类yml

service接口

service实现

manager增加SendMail类

controller


代码展示


导入依赖


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


增加配置类yml


mail:
    host: smtp.qq.com
    port: 587
    username: 写qq邮箱
    password: 在qq邮箱设置>账户>开启POP3/SMTP服务时获得
    default-encoding: UTF-8
    properties:
      smtp:
        socketFactoryClass: javax.net.ssl.SSLSocketFactory
      debug: true


service接口


 /**
     * 发送邮件
     * @param email 邮箱
     * @param session session会话
     * @return boolean
     */
    boolean sendMail(String email, HttpSession session);


service实现


 @Autowired
    protected SendMail sendMail;
 @Override
    public boolean sendMail(String email, HttpSession session) {
        String code = sendMail.sendSimpleMail(email);
        session.setAttribute("code",code);
        System.out.println(code);
        QueryWrapper<UserBean> wrapper = new QueryWrapper<>();
        wrapper.inSql("id","select id from tab_member where member_mail= "+"\""+email+"\"");
        UserBean user = userMapper.selectOne(wrapper);
        session.setAttribute("password",user.getMemberPassword());
        return code != null;
    }

manager增加SendMail类


import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.Random;
/**
 * @Author: Ljx
 * @Date: 2021/5/22 9:24
 */
@Component
public class SendMail {
    @Autowired
    JavaMailSender javaMailSender;
    int max = 99999;
    int min = 10000;
    Random random = new Random();
    public String sendSimpleMail(String email){
        int s = random.nextInt(max-min+1) + min;
        String code = String.valueOf(s);
        SimpleMailMessage message = new SimpleMailMessage();
        message.setSubject("找回密码");
        message.setFrom("写qq邮箱");
        message.setTo(email);
        message.setSentDate(new Date());
        message.setText("你的验证码是:"+code);
        javaMailSender.send(message);
        return code;
    }
}

controller


 @PostMapping("/sendEmail")
    @ApiOperation(value = "发送验证码", notes = "邮箱不能为空", httpMethod = "POST")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "query", name = "email",
                    value = "邮箱", required = true, dataType = "String"),
    })
    public RespBean sendEmail(String email, HttpSession session){
        boolean judgment = iUserService.sendMail(email,session);
        if (judgment){
            String returnCode = (String) session.getAttribute("code");
            logger.info("发送验证码成功");
            return RespBean.ok("发送验证码成功",returnCode);
        }else{
            logger.error("发送验证码失败");
            return RespBean.error("发送验证码失败");
        }
    }


相关文章
|
6月前
|
安全 Java Maven
在 Spring Boot 中实现邮件发送功能可以通过集成 Spring Boot 提供的邮件发送支持来完成
在 Spring Boot 中实现邮件发送功能可以通过集成 Spring Boot 提供的邮件发送支持来完成
62 2
|
7月前
|
Java Spring
Spring boot项目如何发送邮件
Spring boot项目如何发送邮件
51 2
|
Java 测试技术 Maven
Spring Boot发送邮件
Spring Boot发送邮件
|
存储 NoSQL Java
spring boot 之登录笔记
在测试平台的开发中,会牵涉到登录内容,页面需要登录后才能访问,所以,对于登录的开发是很有必要的。本文记录我在系统登录的一些自己的做法。
spring boot 之登录笔记
|
Java 数据库 Spring
spring boot 之注册
spring boot 之注册
spring boot 之注册
|
消息中间件 Java Spring
|
Java API 数据安全/隐私保护
|
网络协议 Java 测试技术
基于Spring Boot快速实现发送邮件功能
基于Spring Boot快速实现发送邮件功能
474 0
基于Spring Boot快速实现发送邮件功能
|
Web App开发 Java 数据安全/隐私保护
Spring Boot 实现登录拦截器(最强实战版)
对于管理系统或其他需要用户登录的系统,登录验证都是必不可少的环节,在SpringBoot开发的项目中,通过实现拦截器来实现用户登录拦截并验证。
Spring Boot 实现登录拦截器(最强实战版)
|
SQL 存储 安全
Spring Boot 发邮件和附件,超实用!
Spring Boot集成邮件服务竟如此简单,快速掌握邮件业务类的核心逻辑和企业邮件的日常服务。 什么是SMTP? SMTP全称为Simple Mail Transfer Protocol(简单邮件传输协议),它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP认证要求必须提供账号和密码才能登陆服务器,其设计目的在于避免用户受到垃圾邮件的侵扰。
336 0
Spring Boot 发邮件和附件,超实用!