石英电子邮件动态
Quartz Email dynamics
我需要的是使用 quartz 在给定的时间发送电子邮件,我只是不知道电子邮件会是什么,所以我想发送一个变量到 EmailJob class,它将在哪里收到各种电子邮件,然后 class JobSchedulerController 将负责激活 Triguer。谁能帮我解决这个问题?
这将是我的 class EmailJob 的代码:
public class 电子邮件工作: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;
}
}
}
这就是我的 class JobSchedulerController
的代码
public class JobSchedulerController:控制器
{
// 获取: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
}
最后搞定了,留下完整代码
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
}
}
第二个Class
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;
}
}
我需要的是使用 quartz 在给定的时间发送电子邮件,我只是不知道电子邮件会是什么,所以我想发送一个变量到 EmailJob class,它将在哪里收到各种电子邮件,然后 class JobSchedulerController 将负责激活 Triguer。谁能帮我解决这个问题?
这将是我的 class EmailJob 的代码:
public class 电子邮件工作: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;
}
}
}
这就是我的 class JobSchedulerController
的代码public class JobSchedulerController:控制器 { // 获取: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
}
最后搞定了,留下完整代码
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
}
}
第二个Class
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;
}
}