Javaでの定期的なメール送信機能の実装方法は何ですか?

JavaMail APIを使用して、定期的にメールを送信する機能を実装することができます。以下は簡単なサンプルコードです:

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

public class EmailScheduler {
    private Timer timer;

    public EmailScheduler() {
        timer = new Timer();
    }

    public void scheduleEmail(String recipient, String subject, String message, Date date) {
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                // 发送邮件
                sendEmail(recipient, subject, message);
            }
        }, date);
    }

    private void sendEmail(String recipient, String subject, String message) {
        String sender = "your-email@example.com"; // 发送者邮箱
        String password = "your-password"; // 发送者邮箱密码

        Properties props = new Properties();
        props.setProperty("mail.smtp.host", "smtp.example.com"); // SMTP服务器地址
        props.setProperty("mail.smtp.auth", "true");

        Session session = Session.getInstance(props, new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(sender, password);
            }
        });

        try {
            // 创建邮件消息
            MimeMessage mimeMessage = new MimeMessage(session);
            mimeMessage.setFrom(new InternetAddress(sender));
            mimeMessage.addRecipient(Message.RecipientType.TO, new InternetAddress(recipient));
            mimeMessage.setSubject(subject);
            mimeMessage.setText(message);

            // 发送邮件
            Transport.send(mimeMessage);
            System.out.println("邮件已发送");
        } catch (MessagingException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        EmailScheduler scheduler = new EmailScheduler();

        // 在指定日期时间发送邮件
        Calendar calendar = Calendar.getInstance();
        calendar.set(2022, Calendar.JANUARY, 1, 10, 0, 0);
        Date date = calendar.getTime();
        scheduler.scheduleEmail("recipient@example.com", "定期邮件", "这是一封定期发送的邮件", date);
    }
}

上記のサンプルコードでは、メールを定期的に送信するためにjava.util.Timerクラスが使用されています。scheduleEmailメソッドは、送信するメールの受信者、件名、内容、送信日時を指定することができます。sendEmailメソッドを使用して、JavaMail APIを使用してメールを送信します。

実際のメールアドレス情報とSMTPサーバーアドレスにそれぞれ差し替えてください。

bannerAds