如何每天通过Quartz.net发送电子邮件 [英] How to send email daily with Quartz.net

查看:72
本文介绍了如何每天通过Quartz.net发送电子邮件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图在asp.net MVC项目中每天使用Quartz.net发送电子邮件.但是它只能工作一次,不会每天重复.这是我的代码

I'm try to use Quartz.net send email at time on everyday in asp.net MVC project. But it's work only once, it's not repeat everyday. Here my code

public class EmailJob: IJob
{
    private static Logger _logger = LogManager.GetCurrentClassLogger();

    public void Execute(IJobExecutionContext context)
    {
        _logger.Info(DateTime.Now.ToString);
    }
}
public static void Start()
    {

        IScheduler _scheduler = StdSchedulerFactory.GetDefaultScheduler();
        _scheduler = StdSchedulerFactory.GetDefaultScheduler();

        IJobDetail job = JobBuilder.Create<EmailJob>().WithIdentity("theJob_").StoreDurably(true)
            .UsingJobData("para", 1).Build();
        _scheduler.AddJob(job, true);

        ITrigger trigger = TriggerBuilder.Create()
             .WithIdentity("trigger3")
            .ForJob(job)
             .WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(8, 0))
           .Build();
        _scheduler.ScheduleJob(trigger);
        _scheduler.Start();

        _logger.Info(DateTime.Now.ToString() + "_scheduler start");
    }

我在全局调用"JobScheduler.Start()".有人可以告诉我我的代码在哪里错误吗?谢谢前进!

I call "JobScheduler.Start()" at global. Can anybody tell me where my code wrong? thank advance!

推荐答案

避免使用 .RepeatForever(),而将 .WithDailyTimeIntervalSchedule .StartingDailyAt 结合使用>

Avoid .RepeatForever(), instead use .WithDailyTimeIntervalSchedule with .StartingDailyAt

示例:

IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();
scheduler.Start();
var hour = 12 //Start Time
var minute=15 //Start minute 

IJobDetail job = JobBuilder.Create<Job_SendMail>().Build();
var time = DateTime.Now.AddSeconds(10);
ITrigger trigger = TriggerBuilder.Create()
    .WithDailyTimeIntervalSchedule
      (s =>
         s.WithIntervalInHours(24)
        .OnEveryDay()
        .StartingDailyAt(TimeOfDay.HourMinuteAndSecondOfDay(hour, minute, time.Second))
      )
    .Build();

scheduler.ScheduleJob(job, trigger);

这篇关于如何每天通过Quartz.net发送电子邮件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆