.NET实现定时发送邮件代码(两种方式)

 更新时间:2020年6月25日 11:27  点击:2255

有时候我们或许会遇到想在某一个时刻给别人发送一封邮件,就像是在生日的时候,但是我们又怕到时候忘记了,这时就应该

使用发送定时邮件的功能,但是这个定时发送邮件功能是怎么实现的呢?下面用两种方式实现.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的计划任务程序指定每天的某个时间点发送思路就是这个思路比服务简单

以上采用了两种方式分别实现了采用.NET技术实现邮件定时发送功能,需要的朋友可以参考下。

[!--infotagslink--]

相关文章

  • ASP.NET购物车实现过程详解

    这篇文章主要为大家详细介绍了ASP.NET购物车的实现过程,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-09-22
  • .NET Core下使用Kafka的方法步骤

    这篇文章主要介绍了.NET Core下使用Kafka的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-09-22
  • 在ASP.NET 2.0中操作数据之七十二:调试存储过程

    在开发过程中,使用Visual Studio的断点调试功能可以很方便帮我们调试发现程序存在的错误,同样Visual Studio也支持对SQL Server里面的存储过程进行调试,下面就让我们看看具体的调试方法。...2021-09-22
  • Win10 IIS 安装.net 4.5的方法

    这篇文章主要介绍了Win10 IIS 安装及.net 4.5及Win10安装IIS并配置ASP.NET 4.0的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下...2021-09-22
  • 详解.NET Core 3.0 里新的JSON API

    这篇文章主要介绍了详解.NET Core 3.0 里新的JSON API,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-09-22
  • .net数据库操作框架SqlSugar的简单入门

    这篇文章主要介绍了.net数据库操作框架SqlSugar的简单入门,帮助大家更好的理解和学习使用.net技术,感兴趣的朋友可以了解下...2021-09-22
  • ASP.NET Core根据环境变量支持多个 appsettings.json配置文件

    这篇文章主要介绍了ASP.NET Core根据环境变量支持多个 appsettings.json配置文件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-09-22
  • 记一次EFCore类型转换错误及解决方案

    这篇文章主要介绍了记一次EFCore类型转换错误及解决方案,帮助大家更好的理解和学习使用asp.net core,感兴趣的朋友可以了解下...2021-09-22
  • .NET C#利用ZXing生成、识别二维码/条形码

    ZXing是一个开放源码的,用Java实现的多种格式的1D/2D条码图像处理库,它包含了联系到其他语言的端口。这篇文章主要给大家介绍了.NET C#利用ZXing生成、识别二维码/条形码的方法,文中给出了详细的示例代码,有需要的朋友们可以参考借鉴。...2020-06-25
  • 详解ASP.NET Core 中基于工厂的中间件激活的实现方法

    这篇文章主要介绍了ASP.NET Core 中基于工厂的中间件激活的实现方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-09-22
  • C#使用Ado.Net更新和添加数据到Excel表格的方法

    这篇文章主要介绍了C#使用Ado.Net更新和添加数据到Excel表格的方法,较为详细的分析了OLEDB的原理与使用技巧,可实现较为方便的操作Excel数据,需要的朋友可以参考下...2020-06-25
  • asp.net通过消息队列处理高并发请求(以抢小米手机为例)

    这篇文章主要介绍了asp.net通过消息队列处理高并发请求(以抢小米手机为例),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-09-22
  • ASP.NET 2.0中的数据操作:使用两个DropDownList过滤的主/从报表

    在前面的指南中我们研究了如何显示一个简单的主/从报表, 该报表使用DropDownList和GridView控件, DropDownList填充类别,GridView显示选定类别的产品. 这类报表用于显示具有...2016-05-19
  • ASP.NET单选按钮控件RadioButton常用属性和方法介绍

    RadioButton又称单选按钮,其在工具箱中的图标为 ,单选按钮通常成组出现,用于提供两个或多个互斥选项,即在一组单选钮中只能选择一个...2021-09-22
  • 详解.NET Core 使用HttpClient SSL请求出错的解决办法

    这篇文章主要介绍了.NET Core 使用HttpClient SSL请求出错的解决办法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2021-09-22
  • Python调用.NET库的方法步骤

    这篇文章主要介绍了Python调用.NET库的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-05-09
  • ASP.NET中iframe框架点击左边页面链接 右边显示链接页面内容

    这篇文章主要介绍了ASP.NET中iframe框架点击左边页面链接,右边显示链接页面内容的实现代码,感兴趣的小伙伴们可以参考一下...2021-09-22
  • 创建一个完整的ASP.NET Web API项目

    ASP.NET Web API具有与ASP.NET MVC类似的编程方式,ASP.NET Web API不仅仅具有一个完全独立的消息处理管道,而且这个管道比为ASP.NET MVC设计的管道更为复杂,功能也更为强大。下面创建一个简单的Web API项目,需要的朋友可以参考下...2021-09-22
  • ASP.NET连接MySql数据库的2个方法及示例

    这篇文章主要介绍了ASP.NET连接MySql数据库的2个方法及示例,使用的是MySQL官方组件和ODBC.NET,需要的朋友可以参考下...2021-09-22
  • Asp.Net使用Bulk实现批量插入数据

    这篇文章主要介绍了Asp.Net使用Bulk实现批量插入数据的方法,对于进行asp.net数据库程序设计非常有借鉴价值,需要的朋友可以参考下...2021-09-22