JavaMail (Jakarta Mail) 用于 Java:完整指南及示例
\n\nJavaMail(现为 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\nJavaMail (Jakarta Mail) 通过 Maven Central 分发。要使用它,请将依赖项添加到您的 pom.xml(Maven)或 build.gradle(Gradle)中。
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\nGradle
\nimplementation '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 中添加:
requires java.mail;\n\n快速入门——最小工作示例
\n\n通过 Gmail SMTP 服务器发送简单文本邮件(需要启用“允许不够安全的应用”或使用应用专用密码)。
\n\nimport 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