Quartz电子邮件动态

时间:2018-09-18 01:30:48

标签: c# asp.net-mvc quartz-scheduler

我需要的是在给定的时间使用石英发送电子邮件,我只是不知道电子邮件将是什么,因此我想将变量发送到EmailJob类,该变量将在其中接收各种电子邮件,然后JobSchedulerController类将负责激活Triguer。有人可以帮助我吗?

这将是我的类EmailJob的代码:

公共类EmailJob:IJob     {

    public Task Execute(IJobExecutionContext context) 
    {
        string UserName = string.Empty;
        string EmailAdress = string.Empty;

        var correo1 = new MailAddress("Test@hotmail.com"); //Colocar el correo principal de salida
        string contrasegna = "-Password-"; //Contraseña del Correo de salida

        //Correos a los que se debe enviar la información
        var correo2 = new MailAddress(Mail_1);
        var correo3 = new MailAddress(Mail_2);
        var correo4 = new MailAddress(Mail_3);
        var correo5 = new MailAddress(Mail_4);

        //El host correspondiente
        string host = "smtp-mail.outlook.com";

        //Título y cuerpo del mensaje.
        string subject = "Prueba del uso de Quartz";
        string body = "Se realiza una prueba con Quartz " + DateTime.Now + " .Finalmente se logra la incorporación de esta librería";
        //

        int? cod_form = 0;
        DateTime Last_update;
        int Status = 0;
        string StatusDescription = string.Empty;
        string User = string.Empty;
        string Email = string.Empty;

        using (var message1 = new MailMessage(correo1.ToString(), Email))
        {
            message1.Subject = subject;
            message1.Body = body;
            using (SmtpClient client = new SmtpClient
            {
                Host = host,
                Port = 587,
                EnableSsl = true,
                UseDefaultCredentials = false,
                Credentials = new NetworkCredential(correo1.Address, contrasegna)
            })
            {
                client.Send(message1);
            }
        }

        using (var message2 = new MailMessage(correo1, correo3))
        {
            message2.Subject = subject;
            message2.Body = body;
            using (SmtpClient client = new SmtpClient
            {
                Host = host,
                Port = 587,
                EnableSsl = true,
                UseDefaultCredentials = false,
                Credentials = new NetworkCredential(correo1.Address, contrasegna)
            })
            {
                client.Send(message2);
            }
        }

        using (var message3 = new MailMessage(correo1, correo4))
        {
            message3.Subject = subject;
            message3.Body = body;
            using (SmtpClient client = new SmtpClient
            {
                Host = host,
                Port = 587,
                EnableSsl = true,
                UseDefaultCredentials = false,
                Credentials = new NetworkCredential(correo1.Address, contrasegna)
            })
            {
                client.Send(message3);
            }
        }

        using (var message4 = new MailMessage(correo1, correo5))
        {
            message4.Subject = subject;
            message4.Body = body;
            using (SmtpClient client = new SmtpClient
            {
                Host = host,
                Port = 587,
                EnableSsl = true,
                UseDefaultCredentials = false,
                Credentials = new NetworkCredential(correo1.Address, contrasegna)
            })
            {
                client.Send(message4);
            }
        }

        return Task.CompletedTask;
    }
}

}

这将是我的JobSchedulerController类的代码

公共类JobSchedulerController:控制器     {         // GET:JobScheduler

    #region Start
    public static async void Start(List<string> Forms_List)
    {
        PrincipalController Status_Form = new PrincipalController();
        EmailStatus SC_Model = new EmailStatus();

        DateTime today = DateTime.Now;
        int days5 = 120;
        int days10 = 240;

        int days7 = 168;

        int minute_10 = 10;
        int minute_20 = 20;


        IJobDetail job = JobBuilder.Create<EmailJob>().Build();

        IScheduler scheduler = await StdSchedulerFactory.GetDefaultScheduler();
        await scheduler.Start();

        ITrigger trigger2 = TriggerBuilder.Create() //Fecha, día exacto, 5 días después, 10 días después.
        .WithIdentity("trigger_Test", "group_Test")
        .StartAt(today)
        //.WithCronSchedule("")
        .WithSimpleSchedule(x => x
            .WithIntervalInMinutes(1)
            //.WithIntervalInHours(days5) //Equivale a 5 días.
            .WithRepeatCount(2))
        .Build();

        await scheduler.ScheduleJob(job, trigger2);
    }
    #endregion
}

1 个答案:

答案 0 :(得分:1)

最后,我得到了完整的代码

    public class JobSchedulerController : Controller
    {
        // GET: JobScheduler


        #region Start
        public static async void Start(List<string> Email)
        {
            DateTime today = DateTime.Now;
            int days5 = 120;
            int days10 = 240;

            int days7 = 168;

            int minute_10 = 10;
            int minute_20 = 20;
            string EmailAdress;

            int cont = 0;
            foreach (var item in Email)
            {
                ++cont;

                EmailAdress = item.ToString();

                IJobDetail job = JobBuilder.Create<EmailJob>()
                .UsingJobData("Email_List", EmailAdress)
                .Build();

                IScheduler scheduler = await StdSchedulerFactory.GetDefaultScheduler();
                await scheduler.Start();

                ITrigger trigger2 = TriggerBuilder.Create() //Fecha, día exacto, 5 días después, 10 días después.
                .WithIdentity("trigger_"+cont, "group_" + cont)
                .StartAt(today)
                //.WithCronSchedule("")
                .WithSimpleSchedule(x => x
                    .WithIntervalInMinutes(1)
                    //.WithIntervalInHours(days5) //Equivale a 5 días.
                    .WithRepeatCount(2))
                .Build();

                await scheduler.ScheduleJob(job, trigger2);
            }
        }
        #endregion
    }
}

第二堂课

public class EmailJob : IJob
    {
        public Task Execute(IJobExecutionContext context) 
        {
            JobKey key = context.JobDetail.Key;
            JobDataMap dataMap = context.JobDetail.JobDataMap;

            string UserName = string.Empty;
            string List_Emails = dataMap.GetString("Email_List");

            var correo1 = new MailAddress("test@hotmail.com"); //Colocar el correo principal de salida
            string contrasegna = "PASSWORD"; //Contraseña del Correo de salida

            //Correos a los que se debe enviar la información
            var correo2 = new MailAddress(List_Emails);

            //El host correspondiente
            string host = "smtp-mail.outlook.com";

            //Título y cuerpo del mensaje.
            string subject = "Prueba del uso de Quartz";
            string body = "Se realiza una prueba con Quartz " + DateTime.Now + " .Finalmente se logra la incorporación de esta librería";
            //

            using (var message1 = new MailMessage(correo1, correo2))
            {
                message1.Subject = subject;
                message1.Body = body;
                using (SmtpClient client = new SmtpClient
                {
                    Host = host,
                    Port = 587,
                    EnableSsl = true,
                    UseDefaultCredentials = false,
                    Credentials = new NetworkCredential(correo1.Address, contrasegna)
                })
                {
                    client.Send(message1);
                }
            }

            return Task.CompletedTask;
        }
    }