免费 Java API 用于发送简单的 HTML 邮件
开源 Java 邮件处理 API,用于创建和发送带附件、嵌入式图像、支持 SMTP、IMAP、POP3 协议以及高级安全的文本和 HTML 邮件。
JavaMail 是什么?
在企业应用和自动化系统的世界里,能够以编程方式发送和接收电子邮件不仅是一种便利——更是一项必需。从发送密码重置和订单确认到处理进入的支持工单,电子邮件集成是核心功能。对于 Java 开发者而言,这一功能的基石是强大且开源的 JavaMail API。本产品页面将深入探讨 JavaMail API、其强大特性,并提供实用代码示例,帮助您在 Java 应用中快速实现邮件集成。
JavaMail API 是由 Oracle(前身为 Sun Microsystems)提供的成熟开源框架,提供平台无关、协议无关的邮件与消息应用构建基础。它是 Java 生态系统中处理电子邮件的标准 API。它抽象了底层的 SMTP、POP3、IMAP 等协议的复杂性,让开发者能够使用干净的面向对象接口进行操作。库中包含多项重要功能,例如创建和发送 HTML 邮件、添加附件、插入内联图片、多部件内容、强身份验证与安全支持、基于文件夹的邮件支持、更好的邮件搜索与过滤、通过 SMTP 读取邮件等。
开始使用 JavaMail
首先,您需要安装 JDK 1.6 或更高版本。然后在 pom.xml 中添加以下 Maven 依赖。
Maven 依赖
<dependency>
<groupId>com.sun.mail</groupId>s;
<artifactId>javax.mail</artifactId>
<version>1.6.2</version>
</dependency>
您可以直接从 GitHub 页面下载该库。
通过 Java 库发送电子邮件
开源的 JavaMail 库支持在 Java 应用中创建并发送简易以及 HTML 邮件。开发者可以读取现有邮件、将文件和图像作为附件添加、向多个用户发送邮件、添加自定义头部等。您需要定义主机、端口以及启用身份验证和 TLS 的标志。下面的示例演示了如何在 Java 应用中使用 SMTP 服务器(如 Gmail)发送基本的纯文本邮件。
如何通过 Java API 使用 SMTP 服务器发送基本的纯文本邮件?
import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.*;
public class SimpleEmailSender {
public static void main(String[] args) {
// 发件人和收件人的邮箱地址
String from = "your.email@gmail.com";
String to = "recipient.email@example.com";
// SMTP 服务器配置(以 Gmail 为例)
String host = "smtp.gmail.com";
final String username = "your.email@gmail.com";
final String password = "your-app-password"; // 使用 Gmail 的应用密码
// 设置邮件服务器属性
Properties properties = new Properties();
properties.put("mail.smtp.auth", "true");
properties.put("mail.smtp.starttls.enable", "true"); // 使用 TLS
properties.put("mail.smtp.host", host);
properties.put("mail.smtp.port", "587");
// 获取 Session 对象并传入用户名和密码
Session session = Session.getInstance(properties, new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
try {
// 创建默认的 MimeMessage 对象
Message message = new MimeMessage(session);
// 设置 From: 头部字段
message.setFrom(new InternetAddress(from));
// 设置 To: 头部字段
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
// 设置 Subject: 头部字段
message.setSubject("Hello from JavaMail API");
// 设置实际的邮件内容
message.setText("This is a test email sent programmatically using the JavaMail API.");
// 发送邮件
Transport.send(message);
System.out.println("Email sent successfully!");
} catch (MessagingException e) {
throw new RuntimeException(e);
}
}
}
通过 Java 搜索和过滤电子邮件
开源的 JavaMail 库完整支持在文件夹中按发送者、主题、日期、标志等多种条件搜索邮件,这在开发邮件客户端或自动化脚本时尤为有用。您还可以通过 AndTerm、OrTerm、NotTerm 组合多个搜索条件。下面的示例演示了如何在 Java 应用中搜索特定发送者的邮件。
如何在 Java 应用中搜索特定发送者的邮件?
Store store = session.getStore("imap");
store.connect("imap.example.com", username, password);
Folder inbox = store.getFolder("INBOX");
inbox.open(Folder.READ_ONLY);
// 搜索特定发送者的邮件
SearchTerm senderTerm = new FromStringTerm("alerts@example.com");
Message[] found = inbox.search(senderTerm);
for (Message m : found) {
System.out.println("Subject: " + m.getSubject());
}
inbox.close(false);
store.close();
SMTP、IMAP、POP3 协议支持
开源的 JavaMail 默认支持三种最常用的邮件协议:SMTP(简单邮件传输协议)用于发送邮件,POP3(邮局协议 3)用于简单的邮件检索,IMAP(互联网消息访问协议)用于更高级的邮件访问(文件夹、部分获取)。此外,它还支持安全变体如 SMTPS、POP3S、IMAPS,并且可以扩展到自定义提供者。
通过 Java 的高级身份验证与安全
开源的 JavaMail 支持与邮件服务器的安全通信,这在当今注重安全的环境中至关重要。库支持 TLS(传输层安全)来加密应用与邮件服务器之间的通信通道。它还支持 SSL(安全套接字层),这是 TLS 的前身,同样用于建立安全连接。库同样支持标准的用户名/密码身份验证,以连接需要登录的服务器。