首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java -如何在特定时间发送电子邮件?

问java -如何在特定时间发送电子邮件?
EN

Stack Overflow用户
提问于 2012-01-16 16:45:20
回答 4查看 6.9K关注 0票数 2

我正在使用Tomcat7.0开发一个Java应用程序(JSF2.0)。我需要每天定时发一封电子邮件。我打算使用JavaMail发送电子邮件,但如何让它在每天的特定时间发送电子邮件。就中午吧。?

任何和所有的帮助都非常感谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-01-16 20:59:47

由于Tomcat是一个简单的simple容器,它不提供内置的调度工具,也不支持非常方便的EJB注释,因此您需要自己管理调度,或者使用第三方类库,例如Quartz,或者只是将作业委托给底层操作系统平台的调度工具,如基于Windows的平台中的Task Scheduler和基于Unix的平台中的Cron。

使用标准API时,您可以使用ServletContextListener在启动时初始化调度器,并且可以使用ScheduledExecutorService作为调度器。

下面是一个启动示例:

代码语言:javascript
复制
@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类看起来就像这样:

代码语言:javascript
复制
public class Mailer implements Runnable {

    @Override
    public void run() {
        // Do your mailing job here.
    }

}

另请参阅:

票数 1
EN

Stack Overflow用户

发布于 2012-01-16 16:50:21

最好的和灵活的解决方案是使用Quartz Scheduler.All,您需要的是创建一个作业和触发器与您指定的要求,您就完成了。

详情请参考官方文件

Quartz-Scheduler-Tutorials

票数 2
EN

Stack Overflow用户

发布于 2012-01-16 16:59:10

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8877458

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档