1. 程式人生 > >利用quartz實現郵件的定時發送

利用quartz實現郵件的定時發送

prior 點擊 art sch reat button 表達 med 調度器

利用quartz框架,實現郵件定點發送:
1.先建一個winform程序,拖幾個lable和textbox,button控件,修改相應的信息
[img]http://images2017.cnblogs.com/blog/1136602/201709/1136602-20170902133256749-663976292.png[/img]
2.點擊button按鈕,在事件下添加如下代碼:[code=csharp]
private void button1_Click(object sender, EventArgs e)
{
string str1 = textBox1.Text;//發件人
string str2 = textBox2.Text;//抄送人
string str3 = textBox3.Text;//收件人
string str4 = textBox4.Text;//密碼
// string str5=
QuartzJob quarztJob = new QuartzJob();//定義具體//操作IJob接口中發郵件的實例
quarztJob.Set1(str1);
quarztJob.Set2(str2);
quarztJob.Set3(str3);
quarztJob.Set4(str4);
//Rdlc rdlc = new Rdlc();
// object sender1;
// rdlc.Form2_Load(sender, e);
IScheduler sch = StdSchedulerFactory.GetDefaultScheduler(); //從工廠中獲取一個調度器實例化
sch.Start();
IJobDetail job1 = JobBuilder.Create<QuartzJob>().WithIdentity("myJob1", "group1")
.Build();
ITrigger tri1 = TriggerBuilder.Create().WithIdentity("myTrigger1", "group1").
StartNow(). //一旦加入scheduler,立即生效
WithCronSchedule("0 21 13 ? * *").Build(); //corn like表達式,
每天下午一點21分的時候發送郵件
&&WithSimpleSchedule (x=>x.
sch.ScheduleJob(job1, tri1);//加載任務和觸發器
}
3.接下來在QuartzJob中寫發送郵件的具體細節,代碼如下:
[/code][code=csharp]
public class QuartzJob : IJob
{
public QuartzJob()
{

}
private static string str11, str22, str33, str44;//設置成靜態變量,這樣在Button作用下修改str11,str22,str33,
//str44的屬性值的將不會再改變
//修改變量
public void Set1(string _str11)
{
//private string str11;
str11 = _str11; //發件人
}
public void Set2(string _str22)
{
str22 = _str22;//抄送人
}
public void Set3(string _str33)
{
str33 = _str33;//收件人
}
public void Set4(string _str44)
{
str44 = _str44;//密碼
}

public void Execute(IJobExecutionContext context)
{
//jobdatamap datamap = context.mergedjobdatamap
SendMail();
}
// string str11 = "[email protected]", str22 = "";
public void SendMail()//定義發送郵件
{
SmtpClient client = new SmtpClient();
client.Host = "smtp.qq.com";
client.UseDefaultCredentials = true;
client.EnableSsl = true;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
// client.Credentials = new NetworkCredential("[email protected]", "20140526XC");
//_Default default= new _Default();
//string username = _Default.str1;
client.Credentials = new NetworkCredential(str11, str44);
MailMessage message = new MailMessage();
message.From = new MailAddress(str11);
message.To.Add(str33);
message.CC.Add(str22);
var attach = new Attachment(@"C:\Users\Dell\pictures\rdlc.jpeg", MediaTypeNames.Image.Jpeg);
//設置contentid
attach.ContentId = "pic";
//zip附件
var attach2 = new Attachment(@"d:\b.zip", "application/x-zip-compressed");
message.Attachments.Add(attach);
message.Attachments.Add(attach2);
message.Subject = "morning";
message.SubjectEncoding = Encoding.UTF8;
//message.body="你好帥!";
message.Body = "<img src=\"cid:pic\"/><p>附件:picture and zip!</p>";
message.BodyEncoding = Encoding.UTF8;
// message.subjectencoding = encoding.utf8;
// message.bodyencoding = encoding.utf8;
message.Priority = MailPriority.High;
message.IsBodyHtml = true;
client.Send(message);
}
}
[/code]總結,我們需要將發送郵件的具體細節放在QuartzJob中,等trigger調度job1時,就可以實現郵件的發送了,希望我的代碼能幫到各位親!

利用quartz實現郵件的定時發送