Java 邮件配置多个收件人

在现代应用程序中,电子邮件功能是必不可少的一部分。常常我们需要向多个收件人发送邮件。本文将介绍如何使用 Java 发送电子邮件,并配置多个收件人。

JavaMail API

JavaMail 是 Java 提供的用于发送和接收电子邮件的 API。首先,我们需要确保已经添加了 JavaMail 和 Activation 的依赖。如果你使用 Maven,可以在 pom.xml 中添加以下依赖:

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

编写邮件发送实现

为了更好地理解邮件发送的过程,我们将实现一个简单的邮件发送类,该类能够支持多个收件人。

1. 创建 MailSender 类

首先,我们定义一个 MailSender 类,并在其中实现发送邮件的方法:

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

public class MailSender {
    private String host;
    private String from;
    private String username;
    private String password;

    public MailSender(String host, String from, String username, String password) {
        this.host = host;
        this.from = from;
        this.username = username;
        this.password = password;
    }

    public void sendMail(List<String> to, String subject, String body) {
        Properties properties = new Properties();
        properties.put("mail.smtp.host", host);
        properties.put("mail.smtp.auth", "true");

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

        try {
            Message message = new MimeMessage(session);
            message.setFrom(new InternetAddress(from));
            InternetAddress[] addresses = new InternetAddress[to.size()];
            for (int i = 0; i < to.size(); i++) {
                addresses[i] = new InternetAddress(to.get(i));
            }
            message.setRecipients(Message.RecipientType.TO, addresses);
            message.setSubject(subject);
            message.setText(body);
            Transport.send(message);
            System.out.println("邮件发送成功!");
        } catch (MessagingException e) {
            e.printStackTrace();
        }
    }
}

2. 使用 MailSender 类

现在我们创建一个主方法来测试这个类。以下示例展示了如何使用 MailSender 类发送邮件:

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        String host = "smtp.example.com"; // SMTP 服务器地址
        String from = "you@example.com";  // 发件人地址
        String username = "your_username"; // 用户名
        String password = "your_password"; // 密码

        MailSender mailSender = new MailSender(host, from, username, password);

        List<String> recipients = Arrays.asList("recipient1@example.com", "recipient2@example.com");
        String subject = "测试邮件";
        String body = "这是一封测试邮件,多个收件人示例。";

        mailSender.sendMail(recipients, subject, body);
    }
}

在这个示例中,我们创建了一个 MailSender 对象,并调用 sendMail 方法来发送邮件。我们以列表的形式传递多个收件人。

饼状图示例

接下来,我们用饼状图来展示电子邮件发送的过程:

pie
    title 电子邮件发送流程
    "设置邮件属性" : 20
    "创建邮件会话" : 25
    "构建邮件内容" : 30
    "发送邮件" : 25

类图

为了更好地理解我们实现代码的结构,下面是 MailSender 类的类图:

classDiagram
    class MailSender {
        +String host
        +String from
        +String username
        +String password
        +void sendMail(List<String> to, String subject, String body)
    }

总结

通过本篇文章,我们学习了如何使用 JavaMail API 发送包含多个收件人的电子邮件。我们实现了 MailSender 类,并展示了相关的使用示例。同时,通过饼状图和类图对邮件发送的流程和结构进行了可视化。

这种模式可以扩展到更复杂的邮件发送场景,比如支持 HTML 格式的邮件、添加附件等。掌握 JavaMail API 后,你可以轻松地将电子邮件功能集成到你的 Java 应用程序中。希望本文对你有所帮助!