SpringBoot邮件发送怎么玩?比官方自带的Mail更好用的三方工具

使用SpringBoot实现邮件发送 邮件发送是一个非常常见的功能,注册时的身份认证、重要通知发送等都会用到邮件发送。Sun公司提供了JavaMail用来实现邮件发送,但是配置烦琐,Spring中提供了JavaMailSender用来简化邮件配置,Spring Boot则提供了MailSenderAutoConfiguration对邮件的发送做了进一步简化。下面就来看看Spring Boot中如何发送邮件。 发送前的准备 以QQ邮箱为例,首先要申请开通POP3/SMTP服务或者IMAP/SMTP服务。SMTP全称为Simple MailTr. 阅读详情

01 引言

官方自带的spring-boot-starter-mail针对普通的文本邮件已经很方便了,但是针对附件、html等还是不太友好的。SpringBoot如果开启了监控spring-boot-starter-actuator,服务器会实时检测邮件服务器是否正常,如果服务器异常,就会反复重试,从而引起服务器的崩溃,不要问我怎么知道的,说多了都是泪。

而今天要介绍的三方库,针对复杂的邮件类型,应对起来游刃有余。

02 Simple Java Mail

2.1 简介

Simple Java Mail 是一个拥有超简洁 API 的邮件库。它是世界上使用起来最简便的(Java)邮件库,可通过 SMTP 发送电子邮件。这个库让你无需处理诸如MimeMessage之类的底层API、繁琐的trycatch结构、内部类以及其他无用的东西。它是一个功能强大、特性完备的邮件库,同时又小巧且轻量。

核心模块:

核心依赖:

  • org.slf4j:slf4j-api
  • com.sun.mail:jakarta.mail
  • com.sun.activation:jakarta.activation
  • jakarta.xml.bind:jakarta.xml.bind-api
  • jakarta.annotation:jakarta.annotation-api
  • com.sanctionco.jmail:jmail (address validation)
  • com.pivovarit:throwing-function (improved Streams api)

GitHub地址:https://github.com/bbottema/simple-java-mail

官网地址:https://www.simplejavamail.org/

2.2 Maven依赖

<dependency>
    <groupId>org.simplejavamail</groupId>
    <artifactId>simple-java-mail</artifactId>
    <version>8.12.6</version>
</dependency>

2.3 案例

@Test
void test01() {
    Mailer mailer = MailerBuilder
            .withSMTPServer("smtp.163.com", 465, 
                    "xxxx@163.com", "授权码"
            )
            .withTransportStrategy(TransportStrategy.SMTPS)
            .buildMailer();


    Email email = EmailBuilder.startingBlank()
            .from( "xxxxx@163.com")
            .to( "xxxx@126.com")
            .withSubject("测试邮件")
            .withHTMLText("<h1>测试邮件123</h1>")
            .buildEmail();


    mailer.sendMail(email);
}

通过MailerBuilder构建发送的客户端,通过EmailBuilder构建发送邮件的具体信息。

内容更是支持丰富:

还有其他的特性,可以自行探索。

2.4 注意事项

如果在项目中正常使用,客户端没有必要每次都创建,只需要注册到Spring容器中,随用随取。

@Bean
public Mailer inhouseMailer() {
    return MailerBuilder
        .withSMTPServer(...)
        .buildMailer();
}

2.5 避坑指南

小编在使用8.12.6版本时,出现了一些包找不到的问题:

由于又引入两个依赖才解决问题:

<dependency>
    <groupId>jakarta.mail</groupId>
    <artifactId>jakarta.mail-api</artifactId>
    <version>2.1.3</version>
</dependency>
<dependency>
    <groupId>jakarta.activation</groupId>
    <artifactId>jakarta.activation-api</artifactId>
    <version>2.1.4</version>
</dependency>

从更新日志来看,v8.11.0已经升级了但部分依赖的版本:

但是,实际发现版本并没有升上去。

也有可能小编本地JDK的问题,这里就不细说了。总之问题通过升级版本可以解决。

03 SMS4J

3.1 简介

SMS4J为短信聚合框架,帮您轻松集成多家短信服务,解决接入多个短信SDK的繁琐流程。 SMS4J着重解决短信发送的问题,但是作者也将邮件的发送也融合了进去。并且拥有独立依赖。

GitHub地址:https://github.com/dromara/sms4j

Gitee地址:https://gitee.com/dromara/sms4j

官方文档:https://sms4j.com

3.2 Maven依赖

因为小编的本地JDK是17,所以使用:

<dependency>
    <groupId>org.dromara.sms4j</groupId>
    <artifactId>sms4j-email-jakarta-core</artifactId>
    <version>3.3.5</version>
</dependency>

3.3 案例

@Test
void test02() {
    MailSmtpConfig config = MailSmtpConfig.builder()
            .fromAddress("xxxx@163.com")
            .smtpServer("smtp.163.com")
            .port("465")
            .username(xxx@163.com")
            .password("授权码")
            .build();

    MailFactory.put("mailClient", config);

    MailMessage message = MailMessage.Builder()
            .mailAddress("xxxxx@126.com")
            .title("测试邮件2")
            .htmlContent("<h1>测试邮件  this is body</h1>")
            .build();

    // 发送邮件:指定黑名单
    MailFactory.createMailClient("mailClient", () -> List.of("")).send(message);
}

MailSmtpConfig构建客户端的配置,通过MailFactory创建客户端。MailMessage构建邮件内容。邮件发送还支持黑名单。邮件内容支持多种模式:

使用的注意事项同上面的案例。

3.4 邮箱监听

邮箱监听可以监听到某个IMAP协议邮箱中收到的邮件,并对其进行一定的处理。小编在测试发现了异常。

@Test
void test03() throws IOException {
    MailImapConfig config2 = new MailImapConfig();
    config2.setImapServer("imap.163.com");
    config2.setAccessToken("授权码");
    config2.setUsername("xxxx@163.com");

    MonitorFactory.put("ws_Monitor", config2, monitorMessage -> {
        System.out.println(JSON.toJSONString(monitorMessage));
        return true;
    });
    MonitorFactory.start("ws_Monitor");
    // MonitorFactory.stop("ws_Monitor");

    System.in.read();
}

但是执行的时候:

该问题未能解决。查阅资料,是因为邮箱因为安全问题被拒绝了。

04 小结

Spring Boot提供了强大的邮件发送支持,而SMS4j和Simple Java Mail则在此基础上提供了更多高级功能和更简洁的API。

大家使用的时候,有没有遇到小编的问题呢?评论区留言。

Web应用项目开发 ——Spring Boot邮件发送 邮件发送是一个非常常见的功能,注册时的身份认证、重要通知发送等都会用到邮件发送。在现代的Web应用程序中,邮件发送功能是非常常见且重要的一部分,Spring Boot框架提供了简单且强大的方式来实现邮件发送功能。Spring中提供了JavaMailsender 用来简化邮件配置,Spring Boot则提供了MailSenderAutoConfguration 对邮件的发送做了进一步简化。下面就分步骤来看一下Spring Boot如何进行邮件发送。 阅读详情

相关推荐

Springboot项目中使用邮件发送

邮件发送是一个非常常见的功能,注册时的身份认证、重要通知发送等都会用到邮件发送。Sun公司提供了JavaMail用来实现邮件发送,但是配置烦琐,Spring 中提供了JavaMailSender 用来简化邮件配置,Spring Boot则提供了MailSenderAutoConfiguration 对邮件的发送做了进一步简化。

weixin_53168000的博客 1573

Spring Boot 如何实现邮件发送

通过本文,我们了解了在Spring Boot应用程序中实现邮件发送的具体步骤。我们首先添加了相关的依赖和配置,然后编写了服务类来发送邮件。我们还介绍了如何发送HTML邮件和带有附件的邮件。在实际应用中,邮件发送是非常常见的功能之一。通过掌握邮件发送的基本知识,我们可以在开发过程中轻松地实现邮件通知功能,为用户提供更好的体验。

徐师兄的博客 4187

Java邮件发送基于springboot实现

Java邮件发送基于springboot实现邮件发送相关版本下面是相关代码整理邮件发送接口MailService邮件发送实现代码MailServiceImpl封装的邮件实体EmailMsg邮件模板,.ftl文件最后一点,邮件发送者配置完结 基于springboot实现邮件发送 基于spring-boot-starter-mail实现,普通邮件发送无需额外依赖引入,因我所使用功能涉及模板发送,所以还需要引入spring-boot-starter-freemarker依赖。 相关版本 springboot:2.

小小程序员 2395

SpringBoot邮件发送

SpringBoot邮件发送

探索er的博客 1万+

SpringBoot邮件发送实战:163邮箱集成与生产环境配置指南

邮件发送是现代Web应用的基础功能,其核心依赖于SMTP协议实现消息传输。为确保通信安全,普遍采用SSL/TLS协议对连接进行加密,防止信息泄露。在Java生态中,Spring Boot通过`spring-boot-starter-mail`组件对邮件发送进行了高度封装,极大简化了开发流程。该技术对于实现用户注册验证、系统通知等场景具有重要价值,是提升应用自动化与用户体验的关键环节。本文以广泛使用的163邮箱为例,详细解析SMTP服务配置、授权码安全机制以及`application.yml`中的关键参数设置

weixin_33884611的博客 432

Spring-boot-email邮件

前言 电子邮件(e-mail)属于互联网一种最为典型的应用,虽然伴随着即时通信软件的广泛使用,它的通信功能有所减弱,但是在账号注册、账号安全以及工作对接方面仍然占有很大应用空间。电子邮件系统包含三个重要的组件,即用户代理、邮件服务器,以及邮件发送协议(如SMTP)和邮件读取协议(如POP3)。Spring-boot-email属于用户代理部分,使用SMTP、IMAP、MIME等协议进行邮件发送,...

dosthing的博客 1万+

SpringBoot 开发案例之整合 mail 发送服务

SpringBoot 开发案例之整合 mail 发送服务 spring-boot-mail.jpg记得上个月做过这样一篇笔记,微服务架构实践之邮件通知系统改造。当时用的是开源的第三方插件 mail 和 Thymeleaf 做发送服务,显然这样子你需要配置一些东西,麻烦!!!接触了 Spring Boot 以后,显然有更好的解决方案,我们只需要引入 spring-boot-starte...

程序员世杰 769

Vue+SpringBoot实现注册发送邮件激活,完整闭环设计

用户注册功能是互联网应用的基石,但仅靠用户名密码登录往往无法确认邮箱归属,导致垃圾账号与僵尸账号泛滥。邮箱激活验证是解决这一问题的经典方案,其核心原理是注册后生成带随机令牌的激活链接,通过邮件发送给用户,点击后由后端校验令牌有效性并更新账户状态,形成从注册到激活的完整闭环。该机制不仅提升了系统安全性,还为后续的邮件重发、状态管理乃至数据清洗提供了清晰的状态机基础。在实际工程中,SpringBoot的后端邮件服务与Vue前端页面交互相互配合,通过异步发送、过期时间设计、幂等校验等细节,能够构建出健壮且用户体验

weixin_34218579的博客 359

springboot整合mail发送电子邮件(QQ邮箱、126邮箱、网易等)

其实我讲解的只是最简单的发送邮件,也可以有多种不同的配置,(如:在邮件发送中添加文件、设置邮件的定时发送、循环发送邮件进行电子轰炸,这个就有点贱了,大家不要放在心上。再往下拉会发现一个SMTP服务,正常状态下应该是关闭的,我们需要把它开启,并且获取授权码(获取授权码的过程会让你发送一条消息到指定的账号,然后就能获取到授权码;以前使用这些技术时,你可能需要进行大量的代码编写。但是,现在有了spring boot,基于spring boot的约定大于配置原理,我们只需要进行一些简单的配置,就可以使用这些技术。

2301_78646673的博客 2318

UE4 GamePlay框架深度解析:从蓝图到C++构建多人游戏核心

在游戏开发与实时交互应用领域,一套清晰、可扩展的底层框架是项目成功的关键。GamePlay框架作为虚幻引擎(UE4/UE5)的核心架构,定义了游戏世界中对象交互、状态管理与网络同步的基本原理。它通过职责分离的设计模式,将游戏规则(GameMode)、全局状态(GameState)、玩家状态(PlayerState)、可操控实体(Pawn/Character)及其控制器(Controller)等核心类有机组织起来,确保了逻辑的清晰性与多人游戏数据的一致性。其技术价值在于为开发者提供了一套经过验证的最佳实践,大

weixin_33924770的博客 628

数据结构——滑动窗口

入:下标为 i 的元素进入窗口,更新相关统计量。如果 i < k−1 则重复第一步更新:更新答案。一般是更新最大值 / 最小值出:下标为 i−k+1 的元素离开窗口,更新相关统计量✔1. 定长子串中元音的最大数目✔2. 找到一个数字的 K 美丽值✔4. 子数组的最大平均数 |方法一:前缀和方法二:滑动窗口7. 得到 K 个黑块的最少涂色次数8. 爱生气的书店老板9. 几乎唯一子数组的最大和10. 长度为 K 子数组中的最大和11. 可获得的最大点数12. 最少交换次数来组合所有的1 ||

qq_68915288的博客 763

探索高效邮件发送:mail-micro-service开源项目推荐

探索高效邮件发送:mail-micro-service开源项目推荐 在数字化时代,邮件作为沟通的重要工具,其稳定性和效率尤为关键。今天,我们将介绍一个高效、灵活的邮件微服务系统——mail-micro-service,它基于SpringBoot和JavaMail构建,旨在解决高频邮件发送的难题。 项目介绍 mail-micro-service是一个专为高频邮件发送设计的微服务系统。它通过轮询和加权...

gitblog_00889的博客 668

SAP License USMM SLAW2 SAP审计

引言 企业每年都会收到SAP License审计邮件,邮件内容大致就是根据贵公司与SAP签定的合同XXX条款规定,贵公司所安装的SAP系统需要进行测定。 关键字: SAP License、 SAP USMM、 SLAW2、 SAP 账号、SAP 账号审计、 SAP License 审计、 SAP 审计报告、SAP 账号优化 SAP License审计邮件 企业每年都会收到SAP License审计邮件,邮件内容大致就是根据贵公司与SAP签定的合同XXX条款规定,贵公司所安...

感悟人生 2981

Spring Boot中使用JavaMailSender发送邮件

相信使用过Spring的众多开发者都知道Spring提供了非常好用的JavaMailSender接口实现邮件发送。在Spring Boot的Starter模块中也为此提供了自动化配置。下面通过实例看看如何在Spring Boot中使用JavaMailSender发送邮件。 快速入门 在Spring Boot的工程中的pom.xml中引入spring-boot-starter-mail依赖: <dependency> <groupId>org.springframework.

一个有情怀的程序猿博客 582

ABAQUS单元刚度矩阵输出全攻略:从理论到实践(含MTX/DAT文件对比)

本文详细解析了ABAQUS中单元刚度矩阵的输出方法,涵盖理论原理、MTX与DAT文件格式对比及二次开发应用。通过具体操作步骤和性能优化建议,帮助用户高效获取并利用刚度矩阵数据,特别适合需要进行有限元分析验证和二次开发的工程师。

lg888的博客 1008

ADS2020实战:村田电感.s2p与.mod文件导入全流程对比(附仿真结果差异分析)

本文详细对比了ADS2020中村田电感的.s2p与.mod文件导入流程及仿真结果差异,重点分析了两种模型在低频段和高频段的精度表现。通过实际案例展示.s2p文件在高频仿真中的优势,以及.mod文件在低频和非线性特性模拟中的准确性,为射频电路设计提供模型选择策略和混合仿真技巧。

weixin_29289821的博客 520

springboot前端传入html后端生成pdf 发送邮件

本人菜鸡程序员一枚,记录工作中遇到的一些问题大家一起参考,望指正。 公司要求生成手机pdf发送给用户,开始使用使用html2canvas和jspdf插件实现但这货有很多的局限性,比如:容易出现截断问题,手机自动适应a4 考虑了很久还是通过前端传入html后端生成pdf,可以完美解决问题 前端 // 获取到要生成pdf的节点 let aaa = this.$refs['pdfDom'].innerHTML //拼接html ...为页面的css var

weixin_45445737的博客 1561

特征拼接(Feature Concatenation)技术全景解析

特征拼接是深度学习中的核心特征融合技术,通过在指定维度连接不同来源的特征张量,创造性地解决了多源、多尺度特征融合的关键挑战。这种简单却强大的操作已成为现代神经网络架构设计的基石。

浩瀚之水的专栏 1643

Spring Boot 2 发送邮件手把手图文教程

最近有童鞋问到笔者如何用Spring Boot发送邮件,故而整理下Spring Boot发送邮件的各种姿势。说到邮件放松,相信大家对Spring Framework提供的...

公众号:Java后端 481

西门子S7-1200PLC与FANUC机器人进行PROFINET IO通信的具体方法和步骤详解

西门子S7-1200PLC与FANUC机器人进行PROFINET IO通信的具体方法和步骤详解

Robot_PLC_HMI_Automation 1万+

作物生长模型Oryza V3实战9:控制文件参数详解

control.dat是ORYZA水稻模型的核心配置文件,主要包含三部分:1)基础参数设置与模拟时间定义;2)关键文件路径配置,包括土壤参数文件(soil.sol)、作物参数文件(cultivar.crp)、田间管理文件(manage.exp)及气象数据目录,同时指定输出结果文件(res.dat)和运行日志(model.log);3)可选参数和输出控制选项。该文件通过关联各类输入数据(气象、土壤、品种特性等)和输出结果,实现模型运行的全流程控制,支持参数调整后继续模拟和中断恢复功能。

221

boot集成的邮箱 spring_SpringBoot开发案例之整合mail发送服务-阿里云开发者社区

当时用的是开源的第三方插件mail和Thymeleaf做发送服务,显然这样子你需要配置一些东西,麻烦!!!接触了Spring Boot以后,显然有更好的解决方案,我们只需要引入spring-boot-starter-mail模块就实现了自动化配置。好,废话不扯,言归正题(文中大部分是部分代码,详细代码见Git)。开发环境JDK1.7、Maven、Eclipse、SpringBoot1.5.2、sp...

weixin_39653733的博客 564

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

springboot 引入_Spring Boot中使用JavaMailSender发送邮件

相信使用过Spring的众多开发者都知道Spring提供了非常好用的JavaMailSender接口实现邮件发送。在Spring Boot的Starter模块中也为此提供了自动化配置。下面通过实例看看如何在Spring Boot中使用JavaMailSender发送邮件。快速入门在Spring Boot的工程中的pom.xml中引入spring-boot-starter-mail依赖:如其他自动化...

weixin_39857792的博客 228

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

java邮件框架_SpringBoot框架(25):使用JavaMailSender发送邮件

相信使用过Spring的众多开发者都知道Spring提供了非常好用的JavaMailSender接口实现邮件发送。在Spring Boot的Starter模块中也为此提供了自动化配置。下面通过实例看看如何在Spring Boot中使用JavaMailSender发送邮件。快速入门在Spring Boot的工程中的pom.xml中引入spring-boot-starter-mail依赖:org.sp...

weixin_31417633的博客 274

Spring Boot(五):Spring Boot中使用JavaMailSender发送邮件

接上一篇文章:Spring Boot(四):Spring Boot中使用Swagger2构建强大的RESTful API文档 相信使用过Spring的众多开发者都知道Spring提供了非常好用的JavaMailSender接口实现邮件发送。在Spring Boot的Starter模块中也为此提供了自动化配置。下面通过实例看看如何在Spring Boot中使用JavaMailSender发送邮件。...

rmkloveme 670

如何使用 Spring Boot 开发邮件系统

邮件发送是互联网企业中必备的功能之一,应用场景非常广泛,比较常见的有:用户注册、忘记密码、监控提醒、企业营销等。大多数互联网企业都会将邮件发送抽取为一个独立的微服务,对外提供接口来支持各种类型的邮件发送。 在本场 Chat 中,我将详细介绍如何使用 Spring Boot 发送各种类型的邮件,以邮件发送为实例,让大家感受使用 Spring Boot 开发项目的便利。 主要内容有: 邮件发送协议、...

GitChat 4880
上一篇: 为什么0.1 + 0.2不等于0.3?一次讲透计算机的数学“Bug”
下一篇: 还在为HTML转PDF发愁?再介绍两款工具,为你保驾护航!
智_永无止境
博客等级 码龄10年 803粉丝 406原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智_永无止境

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值