.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的计划任务程序指定每天的某个时间点发送思路就是这个思路比服务简单

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

(0)

相关推荐

  • 在ASP.NET2.0中通过Gmail发送邮件的代码

    在这里我们主要是使用Gmail,究其原因,是因为,我在使用Gmail的邮箱发送邮件的时候,遇到一小小的困难,而使用163等邮箱的时候,没遇到这个问题.     在ASP.NET2.0中,发送邮件是很简单的,我们主要使用来自命名空间System.Net.Mail中的几个类,MailMessage和SmtpClient.     核心代码是很简洁的,如下:     复制代码 代码如下: string to = "这里填写接收者的Email地址";      string from = &q

  • Asp.net发送邮件的两种方法小结

    一,利用大网站的SMTP来发送邮件 这种方法适用于程序运行环境没有配置SMTP的服务器,想借助于其他smtp来发送邮件的情况,当然需要有此smtp的账户才行,例如如果使用Google的SMTP服务器,有三点需要注意:启用SSL,端口和地址smtp.gmail.com. 二,利用本地的smtp来发送邮件 这种方法要求本地有smtp服务器,如果没有,windows 7和vista上面没有smtp服务器可以安装一个软件, Free SMTP Server,下载地址:http://www.softsta

  • .net发送邮件实现代码

    MailMessage objMail = new MailMessage(); objMail.Subject = "邮件主题"; objMail.Body = "邮件正文"; string mfrom = txtFrom.Value; //从页面读取发送者地址 objMail.From = new MailAddress(mfrom); string mt = txtTo.Value; //从页面读取接收者地址 MailAddress ma = new Mail

  • .NET发送邮件遇到问题及解决方法

    .NET后台代码利用QQ邮箱服务器发送邮件遇到的问题:"mail from address must be same as authorization user" 首先,看下我的代码实现 后台代码: public class EmailHelper { /// <summary> /// 发送邮件 /// </summary> /// <param name="subject">主题</param> /// <p

  • .net中 发送邮件内容嵌入图片的具体实例

    例程一 邮件内容调用图片格式为:<img src=\"cid:Email001\"> 发送邮件的服务端代码为: SmtpClient 发送邮件的对象 //代码省略 复制代码 代码如下: System.Net.Mail.MailMessage mailMessage = new System.Net.Mail.MailMessage();mailMessage.From="发送者邮箱";mailMessage.To.Add("收件人邮件列表&qu

  • asp.net mvc发送邮件实例讲解

    QQ邮箱 POP3 和 SMTP 服务器地址设置如下:邮箱POP3服务器(端口110)SMTP服务器(端口25)qq.compop.qq.comsmtp.qq.comSMTP服务器需要身份验证. 如果是设置POP3和SMTP的SSL加密方式,则端口如下: POP3服务器(端口995) SMTP服务器(端口465或587). qq邮箱要注意开启下面的服务:qq会给你个授权码,在下面的代码中详细的讲了在哪用这个授权码. 控制器中代码: using System.Net.Mail;//邮件发送需引用

  • C#.NET发送邮件的实例代码

    复制代码 代码如下: using System;using System.Collections.Generic;using System.Text;using System.Net.Mail;using System.Net;namespace MyQuery.Utils{    /// <summary>    /// 封装邮件处理    /// by 贾世义 2011-6-3    /// </summary>    public static class MailHelpe

  • asp.net System.Net.Mail 发送邮件

    举例: 复制代码 代码如下: 163.com的邮箱在早期申请的是支持的,后面申请的都是不支持. 21cn.com似乎现在已经放弃了smtp支持,可能只有缴费用户才可以. qq.com的邮箱需要在用户帐户里面设置. 我拿了个sina.com的邮箱进行测试,也需要在后台里面的才可以发送.详细代码如下: 复制代码 代码如下: MailAddress from = new MailAddress("sosuo8@sina.com"); MailAddress to = new MailAddr

  • asp.net发送邮件实现方法

    本文实例讲述了asp.net发送邮件的实现方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: MailMessage mailMsg = new MailMessage();    //设置收件人的邮件地址    mailMsg.To = "bailichunwow@qq.com ";        //设置发送者的邮件地址    mailMsg.From = "bailichun@vip.qq.com ";    //设置邮件主题    mail

  • 在asp.NET 中使用SMTP发送邮件的实现代码

    核心代码: 复制代码 代码如下: public class Mail { #region 邮件参数 static public string accountName = System.Configuration.ConfigurationManager.AppSettings["SmtpAccountName"]; static public string password = System.Configuration.ConfigurationManager.AppSettings[

随机推荐