asp.net与c#定时发邮件的多种方法

发布时间:2019-10-22编辑:脚本学堂
有关asp.net或c#中定时发送邮件的多种方法,c#发送邮件,可以用Timer来设置时间,分享几个asp.net定时发邮件的例子,通过实例学习asp.net程序中定时发邮件的实现思路。

无论是asp.net发邮件,还是c#发邮件都不复杂,但有一个特例是如何实现定时发邮件,可以参考本文提供的这几个例子。

一、asp.net C# 定时发送邮件 
在c#中定时发邮件,可以用Timer来设置时间,放在了Global.asax的Application_Start中。

完整代码:
 

复制代码 代码示例:
using System.Net.Mail;
using System.Timers;
protected void Application_Start(object sender, EventArgs e)
{
Timer t = new Timer(60000);//设计时间间隔,如果一个小时执行一次就改为3600000 ,这里一分钟调用一次
t.Elapsed += new ElapsedEventHandler(t_Elapsed);
t.AutoReset = true;
t.Enabled = true;
}
private void t_Elapsed(object sender, ElapsedEventArgs e)
{
MailMessage message = new MailMessage();
message.From = Messagefrom;
message.To.Add(MessageTo);  //收件人邮箱地址可以是多个以实现群发
message.Subject = MessageSubject;
message.Body = MessageBody;
message.IsBodyHtml = true;  //是否为html格式
message.Priority = MailPriority.High;  //发送邮件的优先等级
SmtpClient sc = new SmtpClient();
sc.Host = "smtp.sina.com";  //指定发送邮件的服务器地址或IP
sc.Port = 25;  //指定发送邮件端口
//sc.UseDefaultCredentials = true;
//sc.EnableSsl = true;
sc.Credentials = new System.Net.NetworkCredential(“**@**”, "密码"); //指定登录服务器的用户名和密码
sc.Send(message);  //发送邮件
}

二、asp.net定时自动发邮件

1. 添加Global.asax文件
add-->web--> Global Application Class

2. 在Global.asax中添加代码
 

复制代码 代码示例:
protected void Application_Start(object sender, EventArgs e) 

System.Timers.Timer timer = new System.Timers.Timer(60000); 
timer.Elapsed += new System.Timers.ElapsedEventHandler(Send); 
timer.Start();  

 
public void Send(object sender, System.Timers.ElapsedEventArgs e) 

 
if (DateTime.Now.Minute == 20) 

sendmail sm = new SendMail(); 
sm.SendEMail("xiaokk@163.com", "xiaokk@163.com", "xiaokk@163.com", "Auto Mail", "This is a auto amil!");


public void SendEMail(string To1, string CC1, string BC1, string Subject1, string Body1) 

MailMessage msg = new MailMessage("admin@163.com", To1); 
msg.CC.Add(CC1); 
msg.Bcc.Add(BC1); 
msg.Subject = Subject1; 
msg.Body = Body1; 
msg.IsBodyHtml = true; 
msg.Priority = MailPriority.High; 
SmtpClient c = new SmtpClient("127.0.0.1"); 
c.Port = 25; 
c.Send(msg); 
}

二、asp.net定时发邮件实现思路

思路一:
可以使用這個:
System.Timers.Timer

思路二:
Quartz.NET是一个开源的作业调度框架,是OpenSymphony 的 Quartz API的.NET移植,它用C#写成,可用于winform和asp.net应用中。它提供了巨大的灵活性而不牺牲简单性。你能够用它来为执行一个作业而创建简单的或复杂的调度。它有很多特征,如:数据库支持,集群,插件,支持cron-like表达式等等。

你曾经需要应用执行一个任务吗?这个任务每天或每周星期二晚上11:30,或许仅仅每个月的最后一天执行。一个自动执行而无须干预的任务在执行过程中如果发生一个严重错误,应用能够知到其执行失败并尝试重新执行吗?你和你的团队是用.NET编程吗?如果这些问题中任何一个你回答是,那么你应该使用Quartz.NET调度器。 Quartz.NET允许开发人员根据时间间隔(或天)来调度作业。它实现了作业和触发器的多对多关系,还能把多个作业与不同的触发器关联。整合了 Quartz.NET的应用程序可以重用来自不同事件的作业,还可以为一个事件组合多个作业.

思路三:
添加一个全局应用程序文件 Global.asax ,代码中写入:
 

复制代码 代码示例:

void Application_Start(object sender, EventArgs e)
{
// 在应用程序启动时运行的代码
//这里设置为一分钟
System.Timers.Timer timer = new System.Timers.Timer(60000);
timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed);
timer.Start();

}

void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
//如果时间为12点正时,执行发送,具体应用自己改
if (DateTime.Now.Hour == 12 && DateTime.Now.Minute == 0)
{
//发送
SendMail();
}
}

四路五:
实在不成用DB做个作业去发~~~使用如果不想用DB发邮件你可以做个作业用SQL去调用.NET的方法进行邮件的发送。