JavaMail (Jakarta Mail) 用于 Java:完整指南及示例

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

JavaMail (Jakarta Mail) 用于 Java:完整指南及示例

\n\n

JavaMail(现为 Jakarta Mail)是用于发送、接收和处理电子邮件的标准 Java 库。它提供了一个强大且灵活的 API,用于处理 SMTP、POP3 和 IMAP 协议,使开发人员能够将邮件功能集成到其应用程序中。该库是 Jakarta EE(原 Java EE)平台的一部分,并得到 Eclipse Foundation 社区的积极支持。

\n\n

为什么需要 JavaMail?在现代开发中,几乎任何企业应用程序都需要发送通知、注册确认、密码重置或报告分发。JavaMail 允许以编程方式执行此操作,而无需使用第三方服务或手动操作。该库支持 MIME 类型、附件、HTML 邮件、多线程发送和加密(SSL/TLS)。

\n\n

主要功能包括:通过 SMTP 服务器(Gmail、Yandex、自有服务器)发送邮件、通过 POP3/IMAP 读取邮件、处理附件(图像、PDF、压缩包)、支持 multipart 消息、管理标志(已读、已删除)以及通过 Properties 进行完整的连接配置。

\n\n

安装

\n\n

JavaMail (Jakarta Mail) 通过 Maven Central 分发。要使用它,请将依赖项添加到您的 pom.xml(Maven)或 build.gradle(Gradle)中。

\n\n

Maven

\n
<dependency>\n    <groupId>com.sun.mail</groupId>\n    <artifactId>javax.mail</artifactId>\n    <version>1.6.2</version>\n</dependency>
\n\n

对于 Jakarta Mail(新版本,从 Jakarta EE 9 开始):

\n
<dependency>\n    <groupId>com.sun.mail</groupId>\n    <artifactId>jakarta.mail</artifactId>\n    <version>2.0.1</version>\n</dependency>
\n\n

Gradle

\n
implementation 'com.sun.mail:javax.mail:1.6.2'\n// 或者对于 Jakarta Mail:\nimplementation 'com.sun.mail:jakarta.mail:2.0.1'
\n\n

如果您使用 Java 9+ 和模块系统,请在 module-info.java 中添加:

\n
requires java.mail;
\n\n

快速入门——最小工作示例

\n\n

通过 Gmail SMTP 服务器发送简单文本邮件(需要启用“允许不够安全的应用”或使用应用专用密码)。

\n\n
import java.util.Properties;\nimport javax.mail.*;\nimport javax.mail.internet.*;\n\npublic class QuickStart {\n    public static void main(String[] args) {\n        // SMTP 设置\n        Properties props = new Properties();\n        props.put("mail.smtp.host", "smtp.gmail.com");\n        props.put("mail.smtp.port", "587");\n        props.put("mail.smtp.auth", "true");\n        props.put("mail.smtp.starttls.enable", "true");\n\n        // 身份验证\n        Session session = Session.getInstance(props, new Authenticator() {\n            @Override\n            protected PasswordAuthentication getPasswordAuthentication() {\n                return new PasswordAuthentication("your-email@gmail.com", "your-password");\n            }\n        });\n\n        try {\n            // 创建邮件\n            Message message = new MimeMessage(session);\n            message.setFrom(new InternetAddress("your-email@gmail.com"));\n            message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("recipient@example.com"));\n            message.setSubject("来自 Java 的测试邮件");\n            message.setText("你好!这是一条测试消息。");\n\n            // 发送\n            Transport.send(message);\n            System.out.println("邮件发送成功!");\n\n        } catch (MessagingException e) {\n            e.printStackTrace();\n        }\n    }\n}
\n\n

基础

推荐