本文以winform为例,做一个定时邮件推送的后台程序
1、创建一个新线程
private void btnStart_Click(object sender, EventArgs e)
{
Thread thread = new Thread(SendMail);//创建线程
if (st==false)//第一次点击为运行程序,第二次点击为停止程序
{
st = true;
btnStart.Text = "停止程序";
thread.IsBackground = true;
thread.Start();
}
else
{
st = false;
btnStart.Text = "开始执行";
thread.Abort();
}
}
2、编写邮件功能
private void SendMail()
{
Action<int> action = delegate (int i) { this.textBox1.Text = sendtimes.ToString(); };//创建一个委托,用于显示邮件发送的次数
while (st == true)
{
if ("此处填入邮件定时条件,如每天早上8点")
{
//创建邮件类
MailMessage msg = new MailMessage();
msg.IsBodyHtml = true;//设置邮件格式
//邮件的发送的地址
msg.From = new MailAddress("输入发送邮件的地址");
//邮件接收地址
msg.To.Add(new MailAddress("输入接收邮件的地址"));
msg.CC.Add("抄送人员地址");
//邮件标题
msg.Subject = "此处填入邮件标题";
//msg.SubjectEncoding = Encoding.UTF8;//邮件标题编码
//邮件内容
msg.Body = "填入邮件内容";
SmtpClient src = new SmtpClient();
src.Credentials = new
System.Net.NetworkCredential("发送者的邮箱账号", "发送者邮箱密码");//登录验证,相当于要登陆发送者的邮箱账号
//网易163免费smtp.163.com
//qq是smtp.qq.com 其他可自行查找
src.Host = @"smtp.qq.com";//服务器地址
try
{
src.Send(msg);
sendtimes++;
}
catch (System.Net.Mail.SmtpException ex)
{
MessageBox.Show("发送出错");
}
if (textBox1.InvokeRequired)//发送次数显示
{
textBox1.Invoke(action, sendtimes);
}
else
{
textBox1.Text = sendtimes.ToString();
}
Thread.Sleep(24 * 60 * 60 * 1000);//发送成功后间隔时间,按实际需求设置
}
else
{
Thread.Sleep(12 * 60 * 60 * 1000);//未发送邮件的程序时间间隔,按实际需求设置
}
}
}