自动电子邮件将在需要和确定的时间通过带有 Windows 时钟的 c# 发送。这就是我编写的代码如何使用 numericUpDown 确定数字的方式(例如,它将以 2 , 8 小时的间隔发送 2 封自动邮件。)我使用计时器完成了此操作,但我可以在计时器中的代码中输入时间,这对我不起作用。当我搜索 Quartz.net 时,它不是作为邮件完成的。邮寄部分是一个单独的功能。作为我的研究结果,我得到了这个,我将设置何时用石英调用这个函数。
Define a job class:创建一个实现Quartz.NET的IJob接口的作业类。该作业类将包含发送邮件的逻辑。例如:
using Quartz;
using System.Threading.Tasks;
public class MailJob : IJob
{
public Task Execute(IJobExecutionContext context)
{
// Logic for sending the mail
// You can use your separate function here
// Example: MailSender.SendMail();
return Task.CompletedTask;
}
}
配置 Quartz.NET:配置 Quartz.NET 以使用所需的调度选项。例如,您可以使用 CronTrigger 来安排作业根据 numericUpDown 值以特定时间间隔运行。这是一个示例,说明如何在 Quartz.NET 中配置 CronTrigger 以根据 numericUpDown 值每 n 分钟触发一次 MailJob:
using Quartz;
using Quartz.Impl;
using System;
public class MailScheduler
{
public async Task ScheduleMailJob(int minutes)
{
ISchedulerFactory schedulerFactory = new StdSchedulerFactory();
IScheduler scheduler = await schedulerFactory.GetScheduler();
await scheduler.Start();
IJobDetail job = JobBuilder.Create<MailJob>()
.WithIdentity("MailJob", "Group1")
.Build();
ITrigger trigger = TriggerBuilder.Create()
.WithIdentity("MailTrigger", "Group1")
.StartNow()
.WithCronSchedule($"0 */{minutes} * ? * *")
.Build();
await scheduler.ScheduleJob(job, trigger);
}
public async Task UnscheduleMailJob()
{
ISchedulerFactory schedulerFactory = new StdSchedulerFactory();
IScheduler scheduler = await schedulerFactory.GetScheduler();
await scheduler.UnscheduleJob(new TriggerKey("MailTrigger", "Group1"));
}
}
在本例中,minutes 参数根据numericUpDown 值指定触发MailJob 的时间间隔,以分钟为单位。 WithCronSchedule 方法用于创建指定触发器计划的 cron 表达式。本例中设置为每n分钟触发一次。
启动和停止调度器:可以使用IScheduler接口的Start和UnscheduleJob方法分别启动和停止调度器,如上例中的ScheduleMailJob和UnscheduleMailJob方法所示。 注意:确保处理异常并在您的应用程序中正确处理调度程序。
使用此设置,MailJob 将根据 CronTrigger 中定义的计划自动触发,该计划基于 numericUpDown 值,使用 Quartz.NET。