1. 产品
  2.   电子邮件
  3.   Java
  4.   JavaMail
 
  

免费 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 读取邮件等。

Previous Next

开始使用 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 的前身,同样用于建立安全连接。库同样支持标准的用户名/密码身份验证,以连接需要登录的服务器。

 中国人