南京大学软件学院的J2EE系列课件主要探讨了如何使用JavaMail API来发送电子邮件,这一功能在企业级Java应用程序中十分常见,如用于订单确认、用户验证等场景。JavaMail API是Java平台上的一个标准组件,允许开发者方便地集成邮件发送功能。
JavaMail API由两大部分组成:应用程序级别的接口,供应用组件用来发送邮件,以及服务提供者接口。在Java EE环境中,JavaMail API已经预装,并提供了一个服务提供者,使得应用组件能够发送互联网邮件。
`javax.mail.Session`是JavaMail的核心组件,它定义了全局和每个用户的邮件相关属性,这些属性决定了客户端和服务器之间的交互方式。例如,通过JNDI(Java Naming and Directory Interface)名称来注册邮件会话,或者设置如邮件存储协议(POP3/IMAP)、传输协议(默认为SMTP)以及发件人地址等属性。开发者可以通过`Properties`对象来配置这些参数,以便连接到正确的邮件服务器。
获取`Session`实例通常涉及使用JNDI查找,如下所示:
```java
try {
Context ctx = new InitialContext();
Session mailSession = (Session) ctx.lookup("MyMail");
} catch (Exception e) {}
```
`javax.mail.internet.InternetAddress`类用于表示电子邮件地址。开发者可以创建`InternetAddress`对象,然后将其设置到`Message`对象的收件人、抄送人或密送人字段,从而指定邮件的接收者。
`javax.mail.Message`类代表单个电子邮件,包含邮件头信息(如地址信息)和邮件正文。`MimeMessage`是`Message`的一个标准实现,支持多部分和任意媒体类型的内容。开发者可以使用`MimeMessage`创建和设置邮件的各种属性,包括发件人、主题、收件人、发送日期和内容。
发送邮件的关键步骤是通过`Transport`接口实现。每个邮件协议(如POP3、IMAP)都有自己的`Transport`实现。`Transport.send(msg)`方法根据`Message`对象的设置将邮件路由到正确的目的地。
以下是一个简单的JavaMail使用示例,名为`MailSender.java`:
```java
import javax.mail.*;
import javax.mail.internet.*;
public class MailSender {
public static void main(String[] args) {
// 创建Session实例
Session session = Session.getDefaultInstance(System.getProperties());
try {
// 创建MimeMessage对象
MimeMessage message = new MimeMessage(session);
// 设置发件人、收件人、主题和内容
message.setFrom(new InternetAddress("from@example.com"));
message.setRecipient(Message.RecipientType.TO, new InternetAddress("to@example.com"));
message.setSubject("测试邮件", "utf-8");
message.setText("这是一封测试邮件", "utf-8");
// 发送邮件
Transport.send(message);
System.out.println("邮件已发送");
} catch (MessagingException e) {
e.printStackTrace();
}
}
}
```
这个例子展示了如何使用JavaMail API创建并发送一封简单的文本邮件。在实际开发中,可能还需要处理附件、HTML内容、抄送和密送等功能,这些都可以通过`MimeMessage`的扩展功能来实现。
JavaMail API是J2EE应用程序中发送电子邮件的标准工具,它提供了丰富的功能和灵活性,使得开发者能够方便地构建邮件通信功能。通过理解并熟练掌握`Session`、`InternetAddress`、`Message`和`Transport`等核心组件,可以有效地集成邮件发送到各种Java应用程序中。