Пробовали ли вы учебник quartz.net ?
Поскольку ваше веб-приложение может быть переработано / перезапущено, вам, вероятно, следует (повторно) инициализировать планировщик quartz.net в Application_Startобработчик в global.asax.cs.
Обновление (с полным примером и некоторыми другими соображениями):
Вот полный пример, как это сделать с помощью кварца.сеть.Прежде всего, вы должны создать класс, который реализует интерфейс IJob
, определенный quartz.net.Этот класс вызывается планировщиком quartz.net в настроенное время и поэтому должен содержать функцию отправки почты:
using Quartz;
public class SendMailJob : IJob
{
public void Execute(JobExecutionContext context)
{
SendMail();
}
private void SendMail()
{
// put your send mail logic here
}
}
Затем необходимо инициализировать планировщик quartz.net, чтобы вызывать вашу работу один раз в день в6:00.Это можно сделать в Application_Start
из global.asax
:
using Quartz;
using Quartz.Impl;
public class Global : System.Web.HttpApplication
{
void Application_Start(object sender, EventArgs e)
{
ISchedulerFactory schedFact = new StdSchedulerFactory();
// get a scheduler
IScheduler sched = schedFact.GetScheduler();
sched.Start();
// construct job info
JobDetail jobDetail = new JobDetail("mySendMailJob", typeof(SendMailJob));
// fire every day at 06:00
Trigger trigger = TriggerUtils.MakeDailyTrigger(06, 00);
trigger.Name = "mySendMailTrigger";
// schedule the job for execution
sched.ScheduleJob(jobDetail, trigger);
}
...
}
Вот и все.Ваша работа должна выполняться каждый день в 06:00.Для тестирования вы можете создать триггер, который срабатывает каждую минуту (например).Взгляните на метод TriggerUtils
.
. Хотя вышеупомянутое решение может работать для вас, есть одна вещь, которую вы должны учитывать: ваше веб-приложение будет переработано / остановлено, если в течение некоторого времени не будет никаких действий(т.е. нет активных пользователей).Это означает, что ваша функция отправки почты может не выполняться (только если во время отправки письма были какие-то действия).
Поэтому вам следует подумать о других решениях вашей проблемы:
- Возможно, вы захотите внедрить службу Windows для отправки электронной почты (служба Windows будет всегда работать)
- или намного проще: реализовать функцию отправки почты в небольшом консольном приложении и настроитьзапланированное задание в windows, чтобы вызывать ваше консольное приложение один раз в день в нужное время.