Apache Commons Email 1.6.0 介绍与选型指南
介绍 Apache Commons Email 1.6.0:基于 JavaMail 的发送简化 API、类族与模块结构、官方示例及 Jakarta Mail/Simple Java Mail/Spring Mail 选型对比。
Apache Commons Email 1.6.0 介绍与选型指南
目标:面向需要在 Java 应用中实现邮件发送(通知、告警、验证码等)的工程师,梳理 Apache Commons Email 1.6.0 的定位、模块结构、特性、官方示例与选型结论。本文为 A1 认知篇,不做本地安装实测,全部论断基于官方文档与发布渠道联网查证,关键论断随文标注来源与查询日期(2026-10-18)。
一、信息基准
- 查询日期:2026-10-18。
- 版本依据:Maven Central 检索
org.apache.commons:commons-email返回 latestVersion=1.6.0(构件时间戳对应 2023-12-17);官网组件页当前展示的 2.0 线为里程碑版本 2.0.0-M1(Last Published: 27 June 2024),repo1 上commons-email2-core亦仅有 2.0.0-M1。确认 1.6.0 为官方最新稳定版,2.0 尚处里程碑阶段。 - 官方来源清单:
- 组件主页:https://commons.apache.org/proper/commons-email/
- 用户指南:https://commons.apache.org/proper/commons-email/userguide.html
- 下载页:https://commons.apache.org/email/download_email.cgi
- Maven Central:https://central.sonatype.com/artifact/org.apache.commons/commons-email
- GitHub 只读副本:https://github.com/apache/commons-email
二、软件概述
Apache Commons Email 的官方定位是"提供一套发送邮件的 API,构建在 Java Mail API 之上并对其做简化"(官网组件主页:"Commons Email aims to provide a API for sending email. It is built on top of the Java Mail API, which it aims to simplify.",查询日期 2026-10-18)。
本次介绍的稳定版本为 1.6.0(2023-12-17,Maven Central 实查;官网 Releases 节注明 "The latest version requires Java 8")。
- 许可:Apache License 2.0(ASF 官方项目)。
- 模块结构:官网明确要求在 Javax 与 Jakarta 两种实现之间二选一——
org.apache.commons:commons-email2-javax或org.apache.commons:commons-email2-jakarta,任选其一都会自动引入核心模块commons-email2-core(官网组件主页 Choose an implementation 节)。1.6.0 属于 1.x 单构件线;2.0 线拆分为上述三模块并尚处里程碑(2.0.0-M1,2024-06-27)。 - 与 JavaMail 的关系:1.6.0 基于 Javax
javax.mailAPI;Jakarta 命名空间迁移在 2.0 线完成(官网模块页与 Javadoc 分模块导航,查询日期 2026-10-18)。
三、核心概念
3.1 类族:按邮件形态分层
官网组件主页给出的核心类族(查询日期 2026-10-18):
| 类 | 用途 |
|---|---|
SimpleEmail | 发送纯文本邮件 |
MultiPartEmail | 发送多部分(multipart)消息,支持附件(内嵌或随附) |
HtmlEmail | 发送 HTML 邮件,具备 MultiPartEmail 全部能力,支持内嵌图片 |
ImageHtmlEmail | 在 HtmlEmail 基础上自动把图片引用转换为内嵌图片 |
EmailAttachment | 附件对象,配合 MultiPartEmail/HtmlEmail 使用 |
3.2 SMTP 会话要素
从用户指南示例可见其配置面:setHostName(SMTP 服务器,未设置时回退系统属性 mail.host)、setSmtpPort、setAuthenticator(账号口令认证)、setSSLOnConnect(SSL 连接开关)、setFrom/addTo/setSubject/setMsg/send(来源:userguide.html《A simple text email》,查询日期 2026-10-18)。
3.3 附件与图片模型
EmailAttachment 通过 setPath/setDisposition/setDescription/setName 描述附件,MultiPartEmail.attach() 添加;ImageHtmlEmail 会把 HTML 中的图片引用转换为内嵌图片(来源:userguide.html《Sending emails with attachments》《HTML formatted email》节,查询日期 2026-10-18)。
四、功能特性
| 特性 | 说明 | 官方来源 |
|---|---|---|
| 纯文本/HTML 邮件 | SimpleEmail、HtmlEmail 两个层级 | 组件主页类族说明 |
| 附件 | MultiPartEmail + EmailAttachment,MIME 编码 | userguide.html |
| 内嵌图片 | HtmlEmail embed;ImageHtmlEmail 自动转换图片引用 | 组件主页 + userguide.html |
| SMTP 认证 | DefaultAuthenticator 账号口令 | userguide.html |
| SSL 连接 | setSSLOnConnect 开关 | userguide.html |
| 双命名空间路线 | 2.0 线提供 javax/jakarta 双实现模块 | 组件主页 |
⚠️ 注意:Commons Email 只覆盖"发送";收信、协议级文件夹管理需直接使用 JavaMail/Jakarta Mail API(官网定位声明即以 sending 为边界,查询日期 2026-10-18)。
五、快速上手
5.1 Maven 依赖
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-email</artifactId>
<version>1.6.0</version>
</dependency>
来源:Maven Central 坐标 org.apache.commons:commons-email:1.6.0(https://central.sonatype.com/artifact/org.apache.commons/commons-email ,查询日期 2026-10-18)。新项目若要面向 Jakarta 命名空间,可评估 2.0 里程碑版 commons-email2-jakarta(官网组件主页)。
5.2 官方示例:发送一封文本邮件
以下代码引自官方用户指南《A simple text email》(https://commons.apache.org/proper/commons-email/userguide.html ,查询日期 2026-10-18):
Email email = new SimpleEmail();
email.setHostName("smtp.googlemail.com");
email.setSmtpPort(465);
email.setAuthenticator(new DefaultAuthenticator("username", "password"));
email.setSSLOnConnect(true);
email.setFrom("user@gmail.com");
email.setSubject("TestMail");
email.setMsg("This is a test mail ... :-)");
email.addTo("foo@bar.com");
email.send();
带附件的邮件(官方示例骨架,来源:userguide.html《Sending emails with attachments》):
// 创建附件
EmailAttachment attachment = new EmailAttachment();
attachment.setPath("mypictures/john.jpg");
attachment.setDisposition(EmailAttachment.ATTACHMENT);
attachment.setDescription("Picture of John");
attachment.setName("John");
// 创建多部分邮件并挂载附件
MultiPartEmail email = new MultiPartEmail();
email.setHostName("mail.myserver.com");
email.addTo("foo@bar.com", "John Doe");
email.setFrom("me@apache.org", "Me");
email.setSubject("The picture");
email.setMsg("Here is the picture you wanted");
// 添加附件并发送
email.attach(attachment);
email.send();
💡 说明:本文为认知篇,示例均引自官方文档原文,未做本地运行验证;2.0 线的包名前缀为
org.apache.commons.mail2.*(官网 userguide 导入示例)。
六、适用场景与限制
适用场景:
- 应用内的邮件通知类需求:注册验证码、告警推送、报表投递等一次成型的 MIME 消息;
- 希望以极小代码量封装 SMTP 细节(认证、SSL、multipart 编码)的中小型项目;
- 维护在 javax 命名空间、暂时无法整体升级 Jakarta Mail 的存量系统。
限制:
- 只发不收,收件场景需原生 JavaMail/Jakarta Mail;
- 1.6.0 发布于 2023-12,2.0 线自 2024-06 的 2.0.0-M1 后无正式版,Jakarta 迁移尚未收尾(Maven Central/官网实查,2026-10-18);
- 模板渲染、异步批量发送、DKIM/SMIME 等高级能力不在其范围内;
- 现代邮件服务商普遍要求 OAuth2 等认证方式,官方文档示例以账号口令为主,接入前需评估认证方式兼容性。
七、同类选型对比
以下竞品数据均于 2026-10-18 联网查证:版本与发版日期取自 GitHub Releases;star 数取自 GitHub 仓库 API。
| 维度 | Commons Email 1.6.0 | Jakarta Mail(mail-api 2.1.5) | Simple Java Mail 8.12.6 | Spring Mail(spring-context-support) |
|---|---|---|---|---|
| 许可 | Apache-2.0 | EPL-2.0 / GPL-2.0 with Classpath Exception(Jakarta EE 标准双许可) | Apache-2.0 | Apache-2.0 |
| 最新版/发版时间 | 1.6.0(2023-12,Maven Central;2.0.0-M1 里程碑 2024-06) | 2.1.5 Final(2025-09,GitHub Release) | 8.12.6(2025-04,Maven Central) | 随 Spring Framework 7.0.9(2026-08,GitHub Release) |
| 社区活跃度 | ASF 官方项目,GitHub 只读副本 + JIRA 协作 | 285★(GitHub API,jakartaee/mail-api),Eclipse 治理 | 1,294★(GitHub API),迭代活跃 | 53,053★(GitHub API,spring-framework 仓库) |
| 版本节奏 | 维护模式,1.x 低频;2.0 未落地 | 随 Jakarta EE 平台年度演进 | 高频小版本 | 随 Spring Framework 半年特性版 + 补丁 |
| 兼容矩阵 | Java 8+(官网),javax 命名空间 | Jakarta EE 10 对应 2.1.x 线 | 面向 Jakarta Mail 的 smtp 封装,功能面广(DKIM/SMIME/OAuth2 等,见仓库 topics) | 与 Spring 体系绑定 |
| 定位差异 | 发送型简化 API | 底层标准 API(收发全能) | 人类友好 builder + 安全/代理/批量等增强 | Spring 集成层(JavaMailSender 抽象) |
选型建议:Spring 项目直接用 Spring Mail 的 JavaMailSender;需要 DKIM/SMIME/OAuth2/代理等进阶能力选 Simple Java Mail;要完整收发与协议控制用 Jakarta Mail 原生 API;Commons Email 适合轻量发送与存量 javax 系统维护,引入前先确认 2.0 线进展。
八、参考链接
- Apache Commons Email 组件主页:https://commons.apache.org/proper/commons-email/
- 用户指南:https://commons.apache.org/proper/commons-email/userguide.html
- 下载页:https://commons.apache.org/email/download_email.cgi
- Maven Central:https://central.sonatype.com/artifact/org.apache.commons/commons-email
- GitHub 只读副本:https://github.com/apache/commons-email
- 竞品来源:https://github.com/jakartaee/mail-api 、https://github.com/bbottema/simple-java-mail 、https://spring.io/projects/spring-framework