常寄email的朋友都知道,信箱有個特殊功能,可以設定郵件寄送時間,定時發送,這個功能是怎麼實現的呢?會遇到想在某一個時刻給別人發送一封郵件,就像是在生日的時候,但是我們又怕到時候忘記了,這時就應該
使用發送定時郵件的功能,但是這個定時發送郵件功能是怎麼實現的呢?
##程式碼會在造訪網站時執行Global.asax程式碼:
void Application_Start(object sender, EventArgs e)
{
// 在应用程序启动时运行的代码
System.Timers.Timer timer = new System.Timers.Timer();//设计时间间隔,如果一个小时执行一次就改为
timer.Elapsed += new System.Timers.ElapsedEventHandler(Send);
timer.AutoReset = true;
timer.Enabled = true;
}
void Application_End(object sender, EventArgs e)
{
// 在应用程序关闭时运行的代码
System.Threading.Thread.Sleep();
string strUrl = "服务器地址";
System.Net.HttpWebRequest _HttpWebRequest = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(strUrl);
System.Net.HttpWebResponse _HttpWebResponse = (System.Net.HttpWebResponse)_HttpWebRequest.GetResponse();
System.IO.Stream _Stream = _HttpWebResponse.GetResponseStream();//得到回写的字节流
_HttpWebResponse.Close();
}
void Application_Error(object sender, EventArgs e)
{
// 在出现未处理的错误时运行的代码
}
void Session_Start(object sender, EventArgs e)
{
// 在新会话启动时运行的代码
}
void Session_End(object sender, EventArgs e)
{
// 在会话结束时运行的代码。
// 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为
// InProc 时,才会引发 Session_End 事件。如果会话模式设置为 StateServer
// 或 SQLServer,则不引发该事件。
}
private void Send(object sender, System.Timers.ElapsedEventArgs e)
{
switch (DateTime.Now.Hour)
{
case :
case :
SendEMail();
break;
//default:
// SendEMail();
// break;
}
}
private void SendEMail()
{
string mailFrom = System.Configuration.ConfigurationManager.AppSettings["MailFrom"].ToString();
string mailUser = System.Configuration.ConfigurationManager.AppSettings["MailUser"].ToString();
string mailPassword = System.Configuration.ConfigurationManager.AppSettings["MailPassword"].ToString();
string hostIP = System.Configuration.ConfigurationManager.AppSettings["MailHost"].ToString();
List<string> mailAddress = new List<string>();
string mailSubjct = "邮件主题";
string mailBody = "邮件内容:";
mailAddress.Add("邮件地址");string strReturn = sendMail(mailSubjct, mailBody, mailFrom, mailAddress, hostIP, mailUser, mailPassword, false);
}
##sendMail方法
public static string sendMail(string mailSubjct, string mailBody, string mailFrom, List<string> mailAddress, string hostIP, string username, string password, bool ssl) { string str = ""; try { MailMessage message = new MailMessage { IsBodyHtml = true, Subject = mailSubjct, Body = mailBody, From = new MailAddress(mailFrom) }; for (int i = ; i < mailAddress.Count; i++) { message.To.Add(mailAddress[i]); } SmtpClient client = new SmtpClient { EnableSsl = ssl, UseDefaultCredentials = false }; NetworkCredential credential = new NetworkCredential(username, password); client.Credentials = credential; client.DeliveryMethod = SmtpDeliveryMethod.Network; client.Host = hostIP; client.Port = x; client.Send(message); } catch (Exception exception) { str = exception.Message; } return str; }
#第二種方式:定時發送郵件可以用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); //发送邮件 }
以上是兩種.NET定時發送郵件代碼實例的詳細內容。更多資訊請關注PHP中文網其他相關文章!