在 Java 中发送电子邮件

17 Mar 2025 | 5 分钟阅读

有多种方法可以使用 JavaMail API 发送电子邮件。 为此,您必须拥有负责发送邮件的 SMTP 服务器。

您可以使用以下技术之一来获取 SMTP 服务器

  • 安装并使用任何 SMTP 服务器,例如 Postcast 服务器、Apache James 服务器、cmail 服务器等。(或)
  • 使用主机提供商提供的 SMTP 服务器,例如我的 SMTP 服务器是 mail.javatpoint.com(或)
  • 使用其他公司(例如 gmail 等)提供的 SMTP 服务器。

在这里,我们将学习使用 javamail API 发送电子邮件的上述三种方法。 但是我们应该学习从 java 应用程序发送电子邮件的基本步骤。


使用 JavaMail API 发送电子邮件的步骤

使用 JavaMail 发送电子邮件的三个步骤如下

  1. 获取会话对象,该对象存储主机的所有信息,例如主机名、用户名、密码等。
  2. 撰写消息
  3. 发送消息


1) 获取会话对象

javax.mail.Session 类提供了两种方法来获取会话对象,Session.getDefaultInstance() 方法和 Session.getInstance() 方法。 您可以使用任何方法来获取会话对象。

Session 类的方法

编号。方法描述
1public static Session getDefaultInstance(Properties props)返回默认会话。
2public static Session getDefaultInstance(Properties props,Authenticator auth)返回默认会话。
3public static Session getInstance(Properties props)返回新会话。
4public static Session getInstance(Properties props,Authenticator auth)返回新会话。

getDefaultInstance() 方法的示例

getInstance() 方法的示例

Properties properties=new Properties();
//fill all the information like host name etc.
Session session=Session.getInstance(properties,null);

2) 撰写消息

javax.mail.Message 类提供了撰写消息的方法。 但它是一个抽象类,因此其子类 javax.mail.internet.MimeMessage 类最常用。
要创建消息,您需要在 MimeMessage 类构造函数中传递会话对象。 例如
现在已经创建了消息对象,但是要将信息存储在此对象中,MimeMessage 类提供了许多方法。 让我们看看 MimeMessage 类提供的方法

MimeMessage 类的常用方法

编号。方法描述
1public void setFrom(Address address)用于设置 from 标头字段。
2public void addRecipient(Message.RecipientType type, Address address)用于将给定地址添加到收件人类型。
3public void addRecipients(Message.RecipientType type, Address[] addresses)用于将给定地址添加到收件人类型。
4public void setSubject(String subject)用于设置主题标头字段。
5public void setText(String textmessage)用于使用 text/plain MIME 类型将文本设置为消息内容。
6public void setContent(Object msg, String contentType)用于使用给定的 MIME 类型将内容设置为消息内容。

撰写消息的示例


3) 发送消息

javax.mail.Transport 类提供了发送消息的方法。

Transport 类的常用方法

编号。方法描述
1public static void send(Message message)用于发送消息。
2public static void send(Message message, Address[] address)用于将消息发送到给定地址。

发送消息的示例


在 Java 中发送电子邮件的简单示例

在此示例中,我们将学习如何通过安装在机器上的 SMTP 服务器发送电子邮件,例如 Postcast 服务器、Apache James 服务器、Cmail 服务器等。 如果您想通过主机提供商提供的 SMTP 服务器发送电子邮件,请参见此示例之后的示例。
要使用 JavaMail API 发送电子邮件,您需要加载两个 jar 文件
  • mail.jar
  • activation.jar
下载这些 jar 文件 或访问 Oracle 站点下载最新版本。

在此示例中,我们将学习如何通过安装在机器上的 SMTP 服务器发送电子邮件,例如 Postcast 服务器、Apache James 服务器、Cmail 服务器等。 如果您想通过主机提供商提供的 SMTP 服务器发送电子邮件,请参见此示例之后的示例。

要运行此示例,您需要加载两个 jar 文件。 有 4 种加载 jar 文件的方法。 其中一种方法是设置 classpath。 让我们看看如何运行这个例子

加载jar文件c:\> set classpath=mail.jar;activation.jar;.;
编译源文件c:\> javac SendEmail.java
通过运行c:\> java SendEmail

通过主机提供商提供的 SMTP 服务器在 Java 中发送电子邮件的示例

如果您使用主机提供商提供的 SMTP 服务器(例如 mail.javatpoint.com),则需要验证用户名和密码。 javax.mail.PasswordAuthentication 类用于验证密码。
如果您使用 JavaMail API 发送电子邮件,请加载两个 jar 文件
  • mail.jar
  • activation.jar
下载这些 jar 文件 或访问 Oracle 站点下载最新版本。

正如您在上面的示例中看到的,需要验证 userid 和密码。 正如该程序所示,您可以轻松发送电子邮件。 相应地更改用户名和密码。 让我们再次通过简单技术看看如何运行它

加载jar文件c:\> set classpath=mail.jar;activation.jar;.;
编译源文件c:\> javac SendMailBySite.java
通过运行c:\> java SendMailBySite