c# global.asax 发送邮件

需求:用户参加某活动后,需要在指定日期给该用户发送一封提醒邮件

思考:用户触发某事件,参加活动,库中生成一条记录。问题是我们需要每天与发送日期比对,这个比对过程是自动进行的,解决方案:利用Application_start   用timer来监测,过一段时间就触发一次。

解决:

 #region  定时发送邮件——焦玉丽——2017年4月22日10:17:28
        protected void Application_Start(object sender, EventArgs e)
        {
            //定义定时器
         //System.Timers.Timer myTimer = new System.Timers.Timer(50000);//50s一次
           System.Timers.Timer myTimer = new System.Timers.Timer(86400000);//一天一次
           myTimer.Elapsed += new ElapsedEventHandler(myTimer_Elapsed);
           myTimer.Enabled = true;
           myTimer.AutoReset = true;

        }

        void myTimer_Elapsed(object source, ElapsedEventArgs e)
        {
            try
            {
                string server="smtp.163.com";
                DataTable dt = getMailUsers();  //应收邮件人的id/endDate/email地址
                if (dt==null||dt.Rows.Count==0)
                {
                    return;
                }
                //获得应收邮件人的数组
                List<String> sendTo=dt.AsEnumerable().Select(d=>d.Field<string>("mail")).ToList ();

                sendMail(server, sendTo);
            }
            catch (Exception)
            {  
                throw;
            }
        }
        protected void Application_End(object sender, EventArgs e)
        {
            //解决IIS应用程序池自动回收的问题
            // Thread.Sleep(1000);
            //指向一个aspx页面,激发application_start  防止回收后进程杀死
            string url = "http://localhost:5134/login.aspx";
            HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url);
            HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
            Stream receiveStream = myHttpWebResponse.GetResponseStream();//得到回写的字节流
        }

邮件发送的方法如下:命名空间中添加using System.Net.Mail; 其中发送邮箱我在配置文件中获取了那就顺便加一个using System.Configuration;

        /// <summary>
        /// 发送邮件
        /// </summary>
        /// <param name="server">服务器协议地址</param>
        /// <param name="sendTo">发给谁(发给一个人)</param>
        /// <param name="dateTime">要发送的时间</param>
        void sendMail(string server, List<String> sendTo)
        {
            string Success = "发送成功";
            try
            {
                //发送邮箱和密码从配置文件读取
                string sendFrom= ConfigurationManager.AppSettings ["sendFrom"];
                string password = ConfigurationManager.AppSettings["password"];

                string subject = "测试";
                string body = @"这是一封测试邮件";
                MailMessage message = new MailMessage();
                message.From = new MailAddress(sendFrom);
                //可以利用MailMessage.To.Add方法增加要发送的邮件地址(可以多个)
                for (int i = 0; i < sendTo.Count; i++)
                {
                    message.To.Add(sendTo[i]);
                }
                message.Subject = subject;
                message.Body = body;
                //设置邮箱的地址或IP
                SmtpClient client = new SmtpClient(server);
                //设置邮箱端口,pop3端口:110, smtp端口是:25  //发送smtp 接收用pop3
                client.Port = 25;
                //设置超时时间
                client.Timeout = 9999;
                //要输入邮箱用户名与密码
                client.Credentials = new NetworkCredential(sendFrom, password);
                client.Send(message);        
            }
            catch (Exception ex)
            {
                Success = ex.ToString();
            }
          }

ssh视频时老师讲的邮件发送的过程图又扒出来了:


小结:这种方法貌似挺消耗内存,学习中



相关推荐
<p> <b><span style="background-color:#FFE500;">【超实用课程内容】</span></b> </p> <p> <br /> </p> <p> <br /> </p> <p> 本课程内容包含讲解<span>解读Nginx的基础知识,</span><span>解读Nginx的核心知识、带领学员进行</span>高并发环境下的Nginx性能优化实战,让学生能够快速将所学融合到企业应用中。 </p> <p> <br /> </p> <p style="font-family:Helvetica;color:#3A4151;font-size:14px;background-color:#FFFFFF;"> <b><br /> </b> </p> <p style="font-family:Helvetica;color:#3A4151;font-size:14px;background-color:#FFFFFF;"> <b><span style="background-color:#FFE500;">【课程如何观看?】</span></b> </p> <p style="font-family:Helvetica;color:#3A4151;font-size:14px;background-color:#FFFFFF;"> PC端:<a href="https://edu.csdn.net/course/detail/26277"><span id="__kindeditor_bookmark_start_21__"></span></a><a href="https://edu.csdn.net/course/detail/27216">https://edu.csdn.net/course/detail/27216</a> </p> <p style="font-family:Helvetica;color:#3A4151;font-size:14px;background-color:#FFFFFF;"> 移动端:CSDN 学院APP(注意不是CSDN APP哦) </p> <p style="font-family:Helvetica;color:#3A4151;font-size:14px;background-color:#FFFFFF;"> 本课程为录播课,课程永久有效观看时长,大家可以抓紧时间学习后一起讨论哦~ </p> <p style="font-family:"color:#3A4151;font-size:14px;background-color:#FFFFFF;"> <br /> </p> <p class="ql-long-24357476" style="font-family:"color:#3A4151;font-size:14px;background-color:#FFFFFF;"> <strong><span style="background-color:#FFE500;">【学员专享增值服务】</span></strong> </p> <p class="ql-long-24357476" style="font-family:"color:#3A4151;font-size:14px;background-color:#FFFFFF;"> <b>源码开放</b> </p> <p class="ql-long-24357476" style="font-family:"color:#3A4151;font-size:14px;background-color:#FFFFFF;"> 课件、课程案例代码完全开放给你,你可以根据所学知识,自行修改、优化 </p> <p class="ql-long-24357476" style="font-family:"color:#3A4151;font-size:14px;background-color:#FFFFFF;"> 下载方式:电脑登录<a href="https://edu.csdn.net/course/detail/26277"></a><a href="https://edu.csdn.net/course/detail/27216">https://edu.csdn.net/course/detail/27216</a>,播放页面右侧点击课件进行资料打包下载 </p> <p> <br /> </p> <p> <br /> </p> <p> <br /> </p>
©️2020 CSDN 皮肤主题: 创作都市 设计师:CSDN官方博客 返回首页