如何:使用 c# quartz.net 定期发送邮件 [关闭]

问题描述 投票:0回答:1

自动电子邮件将在需要和确定的时间通过带有 Windows 时钟的 c# 发送。这就是我编写的代码如何使用 numericUpDown 确定数字的方式(例如,它将以 2 , 8 小时的间隔发送 2 封自动邮件。)我使用计时器完成了此操作,但我可以在计时器中的代码中输入时间,这对我不起作用。当我搜索 Quartz.net 时,它不是作为邮件完成的。邮寄部分是一个单独的功能。作为我的研究结果,我得到了这个,我将设置何时用石英调用这个函数。

c# quartz.net
1个回答
0
投票

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。

© www.soinside.com 2019 - 2024. All rights reserved.