兩種.NET定時發送郵件代碼執行個體

來源:互聯網
上載者:User
經常發郵件的朋友都知道,郵箱有個特殊功能,可以設定http://www.php.cn/code/6259.html" target="_blank">郵件發送時間,定時發送,這個功能是怎麼實現的呢?接下來,小編給大家分享.NET實現定時發送郵件的代碼,有需要的朋友可以參考下

有時候我們或許會遇到想在某一個時刻給別人發送一封郵件,就像是在生日的時候,但是我們又怕到時候忘記了,這時就應該

使用發送定時郵件的功能,但是這個定時發送郵件功能是怎麼實現的呢?下面用兩種方式實現.net定時發送郵件代碼,具體請看下面內容。

實現思路、需求添加一個全域應用程式類Global.asax

代碼會在訪問網站時運行

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.asaxApplication_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);  //發送郵件   }

到此全部代碼就寫完了。

建立一個控制台程式,產生一個exe 採用windows的計劃任務程式指定每天的某個時間點發送思路就是這個思路比服務簡單

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.