Home > Article > Backend Development > Two .NET scheduled email code examples
Friends who often send emails know that the mailbox has a special function, which can be set to email sending Time, scheduled sending, how is this function implemented? Next, the editor will share with you the .NET code for sending scheduled emails. Friends in need can refer to it
Sometimes we may Sometimes we want to send an email to someone at a certain moment, like a birthday, but we are afraid that we will forget it by then. At this time, we should
use the function of sending scheduled emails, but How is this scheduled mail sending function implemented? There are two ways to implement the .net scheduled mail sending code. Please see the following for details.
Add a global application class Global.asax#.
##The code will be run when the website is visitedGlobal.asax code:
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 method
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; }
To send emails regularly, you can use
Timer to set the time, which is placed in Application_Start of Global.asaxusing 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); //发送邮件
}
The whole code is here Finished.
Create a console program and generate an exe. Use the Windows scheduled task program to specify a certain time point every day to send the idea. This idea is simpler than the service.
The above is the detailed content of Two .NET scheduled email code examples. For more information, please follow other related articles on the PHP Chinese website!