在 Java 中发送电子邮件:JavaMail 和 Simple Java Mail 库

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

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

开始课程

在 Java 中发送电子邮件:库概述和代码示例



发送电子邮件是企业级和 Web 应用程序中的基本任务之一。在 Java 生态系统中,有几种经过验证的工具可用于处理 SMTP 协议。在本文中,我们将介绍两个主要的库:标准的 JavaMail (Jakarta Mail) 和更现代的 Simple Java Mail。您将了解如何配置与 SMTP 服务器的连接、发送简单的电子邮件、添加 HTML 标记和附件。



1. Jakarta Mail(原 JavaMail API)



Jakarta Mail(原名 JavaMail API)是 Java 中用于处理电子邮件的官方规范。它是 Jakarta EE 的一部分,可用于任何 Java 项目。要连接到 SMTP 服务器,需要在 pom.xml(Maven)或 build.gradle(Gradle)中添加依赖项。



添加依赖项(Maven)

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


示例:发送简单的纯文本电子邮件

import javax.mail.*;import javax.mail.internet.*;import java.util.Properties;

public class EmailSender { public static void main(String[] args) { final String username = "your-email@gmail.com"; final String password = "your-app-password";

Properties props = new Properties(); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.starttls.enable", "true"); props.put("mail.smtp.host", "smtp.gmail.com"); props.put("mail.smtp.port", "587");

Session session = Session.getInstance(props, new Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username, password); } });

try { Message message = new MimeMessage(session); message.setFrom(new InternetAddress(username)); message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("recipient@example.com")); message.setSubject("来自 Java 的测试邮件"); message.setText("你好!这封邮件是使用 JavaMail API 发送的。");

Transport.send(message); System.out.println("邮件发送成功!"); } catch (MessagingException e) { e.printStackTrace(); } }}


  • Properties — SMTP 设置:主机、端口、身份验证、TLS。
  • Session — 与服务器的会话,使用身份验证器创建。
  • MimeMessage — 邮件对象,在其中设置发件人、收件人、主题和正文。
  • Transport.send() — 通过 SMTP 发送邮件。


发送带附件的 HTML 邮件

import javax.mail.*;import javax.mail.internet.*;import javax.activation.*;

public class HtmlEmailWithAttachment { public static void main(String[] args) throws Exception { Properties props = new Properties(); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.starttls.enable", "true"); props.put("mail.smtp.host", "smtp.gmail.com"); props.put("mail.smtp.port", "587");

Session session = Session.getInstance(props, new Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication("your-email@gmail.com", "your-password"); } });

MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress("your-

推荐