Java中for循环实现群发邮件

1. 流程概述

为了实现Java中使用for循环来群发邮件,我们需要按照以下步骤进行操作:

  1. 创建一个包含所有收件人邮箱地址的列表。
  2. 遍历收件人列表,取出每个收件人的邮箱地址。
  3. 使用SMTP协议发送邮件给每个收件人。

下面将详细介绍每个步骤的具体操作。

2. 代码实现

步骤1:创建收件人邮箱地址列表

首先,我们需要创建一个包含所有收件人邮箱地址的列表。可以使用ArrayList类来实现:

import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {
        // 创建收件人邮箱地址列表
        ArrayList<String> recipients = new ArrayList<>();
        recipients.add("recipient1@example.com");
        recipients.add("recipient2@example.com");
        recipients.add("recipient3@example.com");
        // ... 添加更多收件人邮箱地址
    }
}

以上代码创建了一个名为recipientsArrayList对象,并添加了几个示例收件人的邮箱地址。你可以根据实际需求添加更多的邮箱地址。

步骤2:遍历收件人列表并发送邮件

接下来,我们需要使用for循环遍历收件人列表,并为每个收件人发送一封邮件。我们可以使用JavaMail API来实现邮件的发送。

首先,我们需要添加JavaMail的依赖。在pom.xml文件中添加以下代码:

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

然后,我们可以编写发送邮件的代码:

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

public class Main {
    public static void main(String[] args) {
        // ... 步骤1:创建收件人邮箱地址列表
        
        // 设置SMTP服务器和发件人邮箱
        String smtpHost = "smtp.example.com";
        String senderEmail = "sender@example.com";
        String senderPassword = "password";
        
        // 设置邮件主题和内容
        String subject = "Test Subject";
        String content = "Test Content";

        // 创建Properties对象,设置SMTP服务器相关信息
        Properties props = new Properties();
        props.put("mail.smtp.host", smtpHost);
        props.put("mail.smtp.auth", "true");
        
        // 创建Authenticator对象,用于认证发件人邮箱和密码
        Authenticator auth = new Authenticator() {
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(senderEmail, senderPassword);
            }
        };

        // 创建Session对象,用于与SMTP服务器建立连接
        Session session = Session.getInstance(props, auth);

        // 遍历收件人列表并发送邮件
        for (String recipient : recipients) {
            try {
                // 创建MimeMessage对象
                MimeMessage message = new MimeMessage(session);
                // 设置发件人
                message.setFrom(new InternetAddress(senderEmail));
                // 设置收件人
                message.setRecipient(Message.RecipientType.TO, new InternetAddress(recipient));
                // 设置邮件主题
                message.setSubject(subject);
                // 设置邮件内容
                message.setText(content);

                // 发送邮件
                Transport.send(message);

                System.out.println("Email sent to: " + recipient);
            } catch (MessagingException e) {
                System.out.println("Failed to send email to: " + recipient);
                e.printStackTrace();
            }
        }
    }
}

以上代码通过使用JavaMail API实现了发送邮件的功能。其中,我们使用了MimeMessage类来创建邮件消息对象,并设置了发件人、收件人、主题和内容。然后,通过调用Transport.send()方法发送邮件。

3. 代码解释

  • ArrayList<String> recipients: 用于存储收件人邮箱地址的列表。
  • String smtpHost: SMTP服务器地址。
  • String senderEmail: 发件人邮箱地址。
  • String senderPassword: 发件人邮箱密码。
  • String subject: 邮件主题。
  • String content: 邮件内容。
  • Properties props: 用于设置SMTP服务器相关信息的Properties对象。
  • Authenticator auth: 用于认证发件人邮箱和密码的Authenticator对象。
  • Session session: 与SMTP服务器建立连接的Session对象。
  • MimeMessage message: 邮件