SpringBoot整合邮件服务

简介: SpringBoot整合邮件服务

SpringBoot整合邮件服务

配置

登录到QQ邮箱:https://mail.qq.com/

选择账户

image-20221206143045740

点击开启SMTP服务:

image-20221206143209397

发送短信:

image.png

发送完,点击我已发送,然后得到密码:

image-20221206143525274

POM依赖:

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

application.yml

spring:
  mail:
    # 配置 SMTP 服务器地址 
    host: smtp.qq.com
    # 发送者邮箱
    username: 你的邮箱
    # 配置密码,注意不是真正的密码,而是刚刚申请到的授权码
    password: 申请的密码
    # 端口号465或587
    port: 587 
    # 默认的邮件编码为UTF-8
    default-encoding: UTF-8

Java集成EmailService

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Component;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.util.Date;

@Component
@Slf4j
public class EmailUtils {
    @Autowired
    JavaMailSender javaMailSender;

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

    public void sendHtml(String title, String html, String to) {
        MimeMessage mailMessage = javaMailSender.createMimeMessage();
        //需要借助Helper类
        MimeMessageHelper helper = new MimeMessageHelper(mailMessage);
        try {
            helper.setFrom(username);  // 必填
            helper.setTo(to);   // 必填
//            helper.setBcc("密送人");   // 选填
            helper.setSubject(title);  // 必填
            helper.setSentDate(new Date());//发送时间
            helper.setText(html, true);   // 必填  第一个参数要发送的内容,第二个参数是不是Html格式。
            javaMailSender.send(mailMessage);
        } catch (MessagingException e) {
            log.error("发送邮件失败", e);
        }
    }

}

在controller里定义接口:

@ApiOperation(value = "邮箱验证接口")
@GetMapping("/email")
public Result sendEmail(@RequestParam String email, @RequestParam String type) {
    userService.sendEmail(email, type);
    return Result.success();
}

在业务实现层UserServiceImpl写业务逻辑

void sendEmail(String email, String type);

private static final Map<String, Long> CODE_MAP = new ConcurrentHashMap<String, Long>();

@Resource
EmailUtils emailUtils;
@Override
public void sendEmail(String email, String type) {
  String  code = RandomUtil.randomNumbers(6);
  log.info("本次验证码的code是:{}", code);
  String context = "<b>尊敬的用户:</b><br><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;您好," +
    "Partner交友网提醒您本次的验证码是:<b>{}</b>," +
    "有效期5分钟。<br><br><br><b>Partner交友网</b>";
  String html = StrUtil.format(context, code);
  if ("REGISTER".equals(type)) {
    // 多线程异步请求
    ThreadUtil.execAsync(() -> {
      emailUtils.sendHtml("【partner交友网】邮箱注册验证",html, email);
    });
    CODE_MAP.put(code, System.currentTimeMillis());
  }
}

输入邮箱,点击发送:

image-20221206152522658

在后端我们可以看到验证码为:

image-20221206152612701

登录邮箱:查看邮件即可

image-20221212103226949

目录
相关文章
|
23天前
|
Java Spring
Spring boot 运行服务jar外配置配置文件方式总结
Spring boot 运行服务jar外配置配置文件方式总结
138 0
|
1天前
|
小程序 JavaScript Java
微信小程序+SpringBoot接入后台服务,接口数据来自后端
这篇文章介绍了如何将微信小程序与SpringBoot后端服务进行数据交互,包括后端接口的编写、小程序获取接口数据的方法,以及数据在小程序中的展示。同时,还涉及到了使用Vue搭建后台管理系统,方便数据的查看和管理。
微信小程序+SpringBoot接入后台服务,接口数据来自后端
|
5天前
|
Java Windows
SpringBoot Windows 自启动 - 通过 Windows Service 服务实现
SpringBoot Windows 自启动 - 通过 Windows Service 服务实现
16 2
|
9天前
|
Java 开发者 Spring
"揭秘SpringBoot魔法SPI机制:一键解锁服务扩展新姿势,让你的应用灵活飞天!"
【8月更文挑战第11天】SPI(Service Provider Interface)是Java的服务提供发现机制,用于运行时动态查找和加载服务实现。SpringBoot在其基础上进行了封装和优化,通过`spring.factories`文件提供更集中的配置方式,便于框架扩展和组件替换。本文通过定义接口`HelloService`及其实现类`HelloServiceImpl`,并在`spring.factories`中配置,结合`SpringFactoriesLoader`加载服务,展示了SpringBoot SPI机制的工作流程和优势。
23 5
|
5天前
|
NoSQL Java Linux
springboot+redis+虚拟机 springboot连接linux虚拟机中的redis服务
该博客文章介绍了如何在Spring Boot项目中通过配置和代码实现连接运行在Linux虚拟机上的Redis服务,并提供了详细的步骤和测试结果截图。
springboot+redis+虚拟机 springboot连接linux虚拟机中的redis服务
|
1月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的母婴全程服务管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的母婴全程服务管理系统附带文章源码部署视频讲解等
31 1
基于springboot+vue.js+uniapp的母婴全程服务管理系统附带文章源码部署视频讲解等
|
1月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue的志愿服务管理系统设计和实现(源码+LW+部署讲解)
基于SpringBoot+Vue的志愿服务管理系统设计和实现(源码+LW+部署讲解)
39 6
|
1月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的邮件过滤系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的邮件过滤系统的详细设计和实现(源码+lw+部署文档+讲解等)
|
1月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的同城家政服务的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的同城家政服务的详细设计和实现(源码+lw+部署文档+讲解等)
117 1
|
1月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的新能源汽车信息咨询服务附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的新能源汽车信息咨询服务附带文章源码部署视频讲解等
25 1