Отправить автоматическую почту на определенную дату через Java - PullRequest
3 голосов
/ 28 апреля 2011

Я использую почтовый API Java для отправки электронной почты через приложение Java.Но я хочу отправить его автоматически на будущую дату, т.е. на любую конкретную дату каждого месяца / года.Я использовал SMTP-сервер моего провайдера для отправки электронной почты по указанному идентификатору. Я привел приведенный ниже пример в сети.Как установить любую конкретную дату здесь. Я попробовал SimpleDateFormat и установил здесь, но он по-прежнему отправляет почту немедленно, но устанавливает дату отправки как указанную конкретную дату.Есть ли другой способ отправить автоматическое письмо в указанные дату и время?

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

// Send a simple, single part, text/plain e-mail
public class TestEmail {

public static void main(String[] args) {

    // SUBSTITUTE YOUR EMAIL ADDRESSES HERE!!!
    String to = "abc@abc.com";
    String from = "abc@abc.com";
    // SUBSTITUTE YOUR ISP'S MAIL SERVER HERE!!!
    String host = "smtp.yourisp.net";

    // Create properties, get Session
    Properties props = new Properties();

    // If using static Transport.send(),
    // need to specify which host to send it to
    props.put("mail.smtp.host", host);
    // To see what is going on behind the scene
    props.put("mail.debug", "true");
    Session session = Session.getInstance(props);

    try {
        // Instantiatee a message
        Message msg = new MimeMessage(session);

        //Set message attributes
        msg.setFrom(new InternetAddress(from));
        InternetAddress[] address = {new InternetAddress(to)};
        msg.setRecipients(Message.RecipientType.TO, address);
        msg.setSubject("Test E-Mail through Java");
        msg.setSentDate(new Date());

        // Set message content
        msg.setText("This is a test of sending a " +
                    "plain text e-mail through Java.\n" +
                    "Here is line 2.");

        //Send the message
        Transport.send(msg);
    }
    catch (MessagingException mex) {
        // Prints all nested (chained) exceptions as well
        mex.printStackTrace();
    }
}
}//End of class

Ответы [ 2 ]

2 голосов
/ 28 апреля 2011

Настроить Quartz Задание для него. Используйте cron триггер , чтобы указать событие выполнения

1 голос
/ 28 апреля 2011

Если вы используете контейнер EJB 3.0+, вы можете легко использовать службу таймера.

Вам необходимо создать сессионный компонент и реализовать интерфейс TimedObject или аннотировать метод с помощью @Timeout.Вы можете получить экземпляр TimerService из InitialContext через getTimerService(), а затем создать таймер с одним из вариантов createTimer().Это может занять интервал или объект Date, указывающий, когда он истекает ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...