SpringBoot整合邮件服务

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot整合邮件服务相关的知识,希望对你有一定的参考价值。

SpringBoot整合邮件服务

配置

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

选择账户

SpringBoot整合邮件服务_spring

点击开启SMTP服务:

SpringBoot整合邮件服务_html_02

发送短信:

SpringBoot整合邮件服务_spring_03

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

SpringBoot整合邮件服务_java_04

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> 您好," +
"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());

输入邮箱,点击发送:

SpringBoot整合邮件服务_spring_05

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

SpringBoot整合邮件服务_spring_06

登录邮箱:查看邮件即可

SpringBoot整合邮件服务_java_07

以上是关于SpringBoot整合邮件服务的主要内容,如果未能解决你的问题,请参考以下文章

重学Springboot系列之邮件发送的整合与使用

SpringBoot整合Hystrix服务降级案例

企业分布式微服务云SpringCloud SpringBoot mybatis (十三)Spring Boot整合MyBatis

springboot整合邮件发送

3.Nacos服务整合SpringBoot框架技术

Java 微服务 day02 源代码 SpringBoot 实战开发 整合Mybatis(数据库连接池),通用Mapper整合,业务层整合