頻繁にメールを送信する友人は、メールボックスに特別な機能があることを知っています。メールの送信時間を設定して送信できます。この機能はどのように実装されていますか? 次に、必要な友人がそれを参照できるように、エディターが共有します。誕生日のようにメールを送信しますが、その頃には予約メールを送信する機能を使用する必要があります。しかし、この予約メールの送信機能はどのように実装されていますか。 ? 定期的に電子メールを送信するための .net コードを実装します。詳細については、次を参照してください。
実装のアイデアと要件については、グローバル アプリケーション クラス Global.asax を追加します
Web サイトにアクセスするとコードが実行されます
:
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; }
2 番目の方法:
定期的にメールを送信するには、Timer を使用できます時間を設定して設置します
Global.asax Application_Start Insideusing 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); //发送邮件
}
以上が2 つの .NET スケジュール済み電子メール コードの例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。