SpringBoot邮件发送

2024-06-16 21:52

本文主要是介绍SpringBoot邮件发送,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

参考文章:https://blog.csdn.net/m0_56287495/article/details/136587403

  1. 导入依赖
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId>
</dependency>
  1. 修改yml
spring:mail:# 配置SMTP服务器地址host: smtp.qq.com# 发送者邮箱username: 123@qq.com# 授权码password: 123# 端口号465或587port: 587# 默认的邮件编码为UTF-8default-encoding: UTF-8# 配置SSL 加密工厂properties:# 设置邮件超时时间防止服务器阻塞timeout: 5000connection-timeout: 5000write-timeout: 5000mail:smtp:socketFactoryClass: javax.net.ssl.SSLSocketFactory# 表示开启DEBUG模式,这样邮件发送过程的日志会在控制台打印,方便排除问题debug: true
  1. 邮件发送
package com.tjx.email.server;import java.io.File;
import java.util.List;/*** <p>** </p>** @author tianjiaxin* @createTime 2024/6/1 16:09* @Description:*/
public interface IEmailService {/*** 普通邮件发送** @param to 发送对象* @param subject 主题* @param context 内容*/void sendText(String to, String subject, String context);/*** html邮件发送** @param to* @param subject* @param context*/void sendHtml(String to, String subject, String context);/*** 邮件发送** @param name 发送人名称* @param to 发送对象* @param subject 主题* @param content 内容* @param isHtml 是否为html* @param cc 抄送,多人用逗号隔开* @param bcc 密送,多人用逗号隔开* @param files 文件*/void send(String name, String to, String subject, String content, Boolean isHtml, String cc, String bcc, List<File> files);}
package com.tjx.email.server.impl;import cn.hutool.core.util.StrUtil;
import com.tjx.email.server.IEmailService;
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.Service;
import org.springframework.util.Assert;
import org.springframework.util.CollectionUtils;import java.io.File;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import javax.mail.internet.InternetAddress;/*** <p>** </p>** @author tianjiaxin* @createTime 2024/6/1 16:14* @Description:*/
@Slf4j
@Service
public class EmailServiceImpl implements IEmailService {@Value("${spring.mail.username:123@qq.com}")private String from;@Autowiredprivate JavaMailSender javaMailSender;@Overridepublic void sendText(String to, String subject, String context) {this.send("TEXT提醒", to, subject, context, false, null, null, null);}@Overridepublic void sendHtml(String to, String subject, String context) {this.send("HTML提醒", to, subject, context, true, null, null, null);}@Overridepublic void send(String name, String to, String subject, String content, Boolean isHtml, String cc, String bcc, List<File> files) {Assert.isTrue(StrUtil.isNotBlank(from) && StrUtil.isNotBlank(to) && StrUtil.isNotBlank(subject) && StrUtil.isNotBlank(content),"发送人,接收人,主题,内容均不可为空!");try {// 用true作为第二个参数,表示创建的MimeMessageHelper对象将支持多部分内容,即可以添加附件或嵌入图片等MimeMessageHelper messageHelper = new MimeMessageHelper(javaMailSender.createMimeMessage(), true);// 发件人 eg:小明<2390696908@qq.com>messageHelper.setFrom(new InternetAddress(name + "<" + from + ">"));messageHelper.setTo(to.split(","));messageHelper.setSubject(subject);messageHelper.setText(content, isHtml);if (!StrUtil.isBlank(cc)) {messageHelper.setCc(cc.split(","));}if (!StrUtil.isBlank(bcc)) {messageHelper.setBcc(bcc.split(","));}if (!CollectionUtils.isEmpty(files)) {for (File file : files) {messageHelper.addAttachment(file.getName(), file);}}// 邮件发送时间
//            messageHelper.setSentDate(new Date());Calendar calendar = Calendar.getInstance();Date time = calendar.getTime();calendar.add(Calendar.MINUTE, 5);Date newTime = calendar.getTime();System.out.println("当前时间:" + time);System.out.println("推迟5分钟:" + newTime);// 注意:不是真的是延迟推送,而是直接发送,这只是邮件上显示的发送时间messageHelper.setSentDate(newTime);javaMailSender.send(messageHelper.getMimeMessage());} catch (Exception e) {throw new RuntimeException(e);}}
}
  1. 测试代码
@Test
public void sendTest() {emailService.sendText("123@163.com", "测试主题", "测试内容");
}

这篇关于SpringBoot邮件发送的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1067656

相关文章

SpringBoot中六种批量更新Mysql的方式效率对比分析

《SpringBoot中六种批量更新Mysql的方式效率对比分析》文章比较了MySQL大数据量批量更新的多种方法,指出REPLACEINTO和ONDUPLICATEKEY效率最高但存在数据风险,MyB... 目录效率比较测试结构数据库初始化测试数据批量修改方案第一种 for第二种 case when第三种

Java docx4j高效处理Word文档的实战指南

《Javadocx4j高效处理Word文档的实战指南》对于需要在Java应用程序中生成、修改或处理Word文档的开发者来说,docx4j是一个强大而专业的选择,下面我们就来看看docx4j的具体使用... 目录引言一、环境准备与基础配置1.1 Maven依赖配置1.2 初始化测试类二、增强版文档操作示例2.

一文详解如何使用Java获取PDF页面信息

《一文详解如何使用Java获取PDF页面信息》了解PDF页面属性是我们在处理文档、内容提取、打印设置或页面重组等任务时不可或缺的一环,下面我们就来看看如何使用Java语言获取这些信息吧... 目录引言一、安装和引入PDF处理库引入依赖二、获取 PDF 页数三、获取页面尺寸(宽高)四、获取页面旋转角度五、判断

Spring Boot中的路径变量示例详解

《SpringBoot中的路径变量示例详解》SpringBoot中PathVariable通过@PathVariable注解实现URL参数与方法参数绑定,支持多参数接收、类型转换、可选参数、默认值及... 目录一. 基本用法与参数映射1.路径定义2.参数绑定&nhttp://www.chinasem.cnbs

JAVA中安装多个JDK的方法

《JAVA中安装多个JDK的方法》文章介绍了在Windows系统上安装多个JDK版本的方法,包括下载、安装路径修改、环境变量配置(JAVA_HOME和Path),并说明如何通过调整JAVA_HOME在... 首先去oracle官网下载好两个版本不同的jdk(需要登录Oracle账号,没有可以免费注册)下载完

Spring StateMachine实现状态机使用示例详解

《SpringStateMachine实现状态机使用示例详解》本文介绍SpringStateMachine实现状态机的步骤,包括依赖导入、枚举定义、状态转移规则配置、上下文管理及服务调用示例,重点解... 目录什么是状态机使用示例什么是状态机状态机是计算机科学中的​​核心建模工具​​,用于描述对象在其生命

Spring Boot 结合 WxJava 实现文章上传微信公众号草稿箱与群发

《SpringBoot结合WxJava实现文章上传微信公众号草稿箱与群发》本文将详细介绍如何使用SpringBoot框架结合WxJava开发工具包,实现文章上传到微信公众号草稿箱以及群发功能,... 目录一、项目环境准备1.1 开发环境1.2 微信公众号准备二、Spring Boot 项目搭建2.1 创建

Java中Integer128陷阱

《Java中Integer128陷阱》本文主要介绍了Java中Integer与int的区别及装箱拆箱机制,重点指出-128至127范围内的Integer值会复用缓存对象,导致==比较结果为true,下... 目录一、Integer和int的联系1.1 Integer和int的区别1.2 Integer和in

SpringSecurity整合redission序列化问题小结(最新整理)

《SpringSecurity整合redission序列化问题小结(最新整理)》文章详解SpringSecurity整合Redisson时的序列化问题,指出需排除官方Jackson依赖,通过自定义反序... 目录1. 前言2. Redission配置2.1 RedissonProperties2.2 Red

IntelliJ IDEA2025创建SpringBoot项目的实现步骤

《IntelliJIDEA2025创建SpringBoot项目的实现步骤》本文主要介绍了IntelliJIDEA2025创建SpringBoot项目的实现步骤,文中通过示例代码介绍的非常详细,对大家... 目录一、创建 Spring Boot 项目1. 新建项目2. 基础配置3. 选择依赖4. 生成项目5.