java-如何在特定时间发送电子邮件?
我正在使用Tomcat7.0开发一个Java应用程序(JSF2.0)。我每天都要在卡塔因时间发一封电子邮件。我将使用JavaMail发送电子邮件,但是如何让它每天在特定的时间发送电子邮件呢。比如说中午java-如何在特定时间发送电子邮件?,java,jsf,jakarta-mail,tomcat7,Java,Jsf,Jakarta Mail,Tomcat7,我正在使用Tomcat7.0开发一个Java应用程序(JSF2.0)。我每天都要在卡塔因时间发一封电子邮件。我将使用JavaMail发送电子邮件,但是如何让它每天在特定的时间发送电子邮件呢。比如说中午 非常感谢所有的帮助 最佳且灵活的解决方案是使用Quartz Scheduler。您只需按照指定的要求创建一个作业和一个触发器,就完成了 详情请参阅官方文件 您可以使用计时器任务 或石英调度器 您可以按照Umesh的建议,通过电子邮件安排您的Quartz调度器,您可以使用以下代码开始: //set
非常感谢所有的帮助 最佳且灵活的解决方案是使用Quartz Scheduler。您只需按照指定的要求创建一个作业和一个触发器,就完成了 详情请参阅官方文件
您可以使用计时器任务 或石英调度器
您可以按照Umesh的建议,通过电子邮件安排您的Quartz调度器,您可以使用以下代码开始:
//set quartz properties in propreties file or map
SchedulerFactory schedFact = new StdSchedulerFactory();
Scheduler sched = schedFact.getScheduler();
//set these parameters
JobDetail jobDetail = new JobDetail( "Email Job" , Scheduler.DEFAULT_GROUP , MyEmailAction.class );
//add data or objects you may require in your scheduled job
JobDataMap dataMap = jobDetail.getJobDataMap();
dataMap.put("mydata", myDataObj);
SimpleTrigger st = new SimpleTrigger();
st.setName("DeployTrigger");
//set the time when you want to send email
st.setStartTime( java.util.Date );
sched.scheduleJob( jobDetail , st );
sched.start();
由于Tomcat是一个简单的servletcontainer,它不提供内置的调度工具,也不支持非常方便的EJB
@Schedule
注释,因此您需要自己管理调度,或者使用第三方库,如Quartz,或者只是将作业委托给底层操作系统平台的调度工具,如基于Windows的平台中的任务调度器和基于Unix的平台中的Cron
使用标准API时,您可以在启动时使用来初始化调度程序,也可以作为调度程序使用
以下是一个启动示例:
@WebListener
public class Config implements ServletContextListener {
private ScheduledExecutorService scheduler;
@Override
public void contextInitialized(ServletContextEvent event) {
long secondsUntilNoon = calculateItSomehow();
long secondsPerDay = 60 * 60 * 24;
scheduler = Executors.newSingleThreadScheduledExecutor();
scheduler.scheduleAtFixedRate(new Mailer(), secondsUntilNoon, secondsPerDay, TimeUnit.SECONDS);
}
@Override
public void contextDestroyed(ServletContextEvent event) {
scheduler.shutdownNow();
}
}
其中,Mailer
类如下所示:
public class Mailer implements Runnable {
@Override
public void run() {
// Do your mailing job here.
}
}
另见: