ホームページ  >  記事  >  バックエンド開発  >  2 つの .NET スケジュール済み電子メール コードの例

2 つの .NET スケジュール済み電子メール コードの例

怪我咯
怪我咯オリジナル
2017-04-01 11:36:002022ブラウズ

頻繁にメールを送信する友人は、メールボックスに特別な機能があることを知っています。メールの送信時間を設定して送信できます。この機能はどのように実装されていますか? 次に、必要な友人がそれを参照できるように、エディターが共有します。誕生日のようにメールを送信しますが、その頃には予約メールを送信する機能を使用する必要があります。しかし、この予約メールの送信機能はどのように実装されていますか。 ? 定期的に電子メールを送信するための .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 Inside

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);  //发送邮件 
  }
これで、すべてのコードが記述されました。 Windows のスケジュールされたタスク プログラムを使用して、毎日特定の時点を指定してアイデアを送信します。このアイデアはサービスよりも簡単です

以上が2 つの .NET スケジュール済み電子メール コードの例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。