Мне нужно использовать кварц для отправки электронной почты в определенный момент времени, я просто не знаю, какой будет электронная почта, поэтому я хочу отправить переменную в класс 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: Controller
{
// 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
}