Spring Java Mail 教程

17 Mar 2025 | 5 分钟阅读

Spring 框架提供了许多用于发送和接收邮件的有用接口和类。

org.springframework.mail 包是 Spring 框架中提供邮件支持的根包。


Spring Java Mail API

Spring 框架中用于 Java 邮件支持的接口和类如下所示

spring with javamail api hierarchy
  1. MailSender 接口:它是根接口。它提供了发送简单邮件的基本功能。
  2. JavaMailSender 接口:它是 MailSender 的子接口。它支持 MIME 消息。它主要与 MimeMessageHelper 类一起使用,用于创建 JavaMail MimeMessage,包括附件等。Spring 框架推荐使用 MimeMessagePreparator 机制来使用此接口。
  3. JavaMailSenderImpl 类:它提供了 JavaMailSender 接口的实现。它支持 JavaMail MimeMessages 和 Spring SimpleMailMessages。
  4. SimpleMailMessage 类:它用于创建简单的邮件消息,包括发件人、收件人、抄送、主题和正文消息。
  5. MimeMessagePreparator 接口:它是准备 JavaMail MIME 消息的回调接口。
  6. MimeMessageHelper 类:它是用于创建 MIME 消息的辅助类。它支持内联元素,例如图像、典型的邮件附件和 HTML 文本内容。

通过 Gmail 服务器在 Spring 中发送邮件的示例

在此示例中,我们使用了两个 spring mail 类

  1. SimpleMailMessage 用于创建消息。
  2. JavaMailSenderImpl 用于发送消息。

您需要创建以下文件才能通过 Spring 框架发送电子邮件。

  1. MailMail.java
  2. applicationContext.xml
  3. Test.java

您需要加载 mail.jar 和 activation.jar 文件才能运行此示例。

下载 mail.jar 和 activation.jar 或转到 Oracle 网站下载最新版本。


1) MailMail.java

这是一个简单的类,定义了 mailSender 属性。在运行时,MailSender 的一个对象将提供给此属性。

在 sendMail() 方法中,我们创建了 SimpleMailMessage 的实例,并将信息存储在此对象中,例如发件人、收件人、主题和消息。

MailSender 接口的 send() 方法用于在此处发送简单的邮件。


2) applicationContext.xml

在此 xml 文件中,我们为 JavaMailSenderImpl 类创建了一个 bean。我们需要定义以下属性的值

  1. host
  2. username
  3. password
  4. javaMailProperties

我们还为 MailMail 类创建了带有 mailSender 属性的 bean。现在,JavaMailSenderImpl 类的实例将设置在 MailMail 类的 mailSender 属性中。


3) Test.java

此类从 applicationContext.xml 文件获取 mailMail 的 bean,并调用 MailMail 类的 sendMail 方法。

如何运行此示例

  • 加载 Spring jar 文件,用于核心和 Java mail
  • 加载 mail.jar 和 activation.jar
  • 在 applicationContext.xml 文件中更改 username 和 password 属性,指定您的 gmail 帐户 ID 和密码。
  • 在 Test.java 文件中更改发件人 gmail ID 和收件人邮件 ID。
  • 编译并运行 Test 类

通过主机提供商提供的服务器在 Spring 中发送邮件的示例

如果您有自己的站点,您可以使用您的邮件服务器。MailMail.java 和 Test 类将相同。您只需要更改 Test.java 文件中的发件人电子邮件 ID。需要在 applicationContext.xml 文件中进行一些更改。

在 applicationContext.xml 文件中,我们使用

  • mail.unitedsquaad.com 作为主机名。请更改它。
  • [email protected] 作为用户名。请更改它。
  • xxxxx 作为密码。请更改它。

向多个收件人发送邮件

您可以通过 SimpleMailMessage 类的帮助将邮件发送给多个收件人。SimpleMailMessage 类的 setTo(String[] receivers) 方法用于将消息发送给多个收件人。让我们看看简单的代码。


Spring MimeMessagePreparator 示例

我们可以通过 MimeMessagePreparator 接口的帮助发送 mime 消息。它有一个方法 prepare(MimeMessage message)。

让我们看看发送 mime 消息的简单代码。

applicationContext.xml 和 Test.java 文件与上面给出的一样。


通过 Spring MimeMessageHelper 示例发送附件

我们可以通过 MimeMessageHelper 类的帮助在 spring 中发送带有附件的 mime 消息。建议使用 MimeMessagePreparator。

让我们看看发送带有附件(图像)的 mime 消息的简单代码。

applicationContext.xml 和 Test.java 文件与上面给出的一样。