当前位置:编程学习 > C#/ASP.NET >>

如何实现系统自动根据用户生日时间发邮件到用户注册的邮箱

想问一个问题:
有这样一个网站系统,用户注册时填写了生日时间。
当用户过生日的时候,系统当天自动给这个人发送一封E-mail,表示祝福。
其中祝福邮件的内容是在数据库的表(邮件信息表)中取出来的。就像QQ那样,到你生日那天,你就会受到一封祝福邮件。
请问如何实现?有没有代码参考一下。 --------------------编程问答-------------------- 实现方式,  net的网站 可以建立一个Global.asax的文件,里面可以添加定时器,利用定时器来扫描用户表,然后再今天过生日的 再执行发邮件的方法。 具体代码 参考

  void Application_Start(object sender, EventArgs e)
    {
        //在应用程序启动时运行的代码
        System.Timers.Timer myTimer = new System.Timers.Timer(); //添加一个Timer
        myTimer.Elapsed += new System.Timers.ElapsedEventHandler(DBTimeEnvent);  //执行方法  DBTimeEnvent
        myTimer.Interval = 30000; //Timer的时间间隔
        myTimer.AutoReset = true; //这里理解为 是执行一次还是执行多次
        myTimer.Enabled = true;   //myTimer.Elapsed 的执行与否
        myTimer.Start();      //启动时间监控
    }


 private void DBTimeEnvent(object sender, System.Timers.ElapsedEventArgs e)
    {
        SendEmail();
    

    } --------------------编程问答-------------------- 写一服务程序,window service --------------------编程问答-------------------- 还不是很明白。这个东西肯定要跟用户表的邮箱关联起来的。就是不知道怎么搞。 --------------------编程问答--------------------
Global.asax文件代码:
<%@ Application Language="C#" %>

<script runat="server">
    public static System.Threading.Timer tm;
    public static int aa = 0;
    void ShowMessage(object message)
    {
       //连接数据库取得生日的邮箱,添加到下面的收件人地址
            MailMessage mailMessage = new MailMessage();
            mailMessage.From =new MailAddress("发件人地址");
            mailMessage.To.Add(“从数据库取得收件人地址”);
            mailMessage.Subject =“主题”;
            mailMessage.Body = “内容”;
            mailMessage.BodyEncoding = System.Text.Encoding.UTF8;
            mailMessage.IsBodyHtml = false;
            mailMessage.Priority = MailPriority.High;

            SmtpClient smtpClient = new SmtpClient("smtp.163.com");//这里添加相应的服务,可以是自己的有的话
            smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network; //将smtpClient的出站设置为network
            smtpClient.EnableSsl = false;
            //smtpClient.Host = "smtp.163.com";
            smtpClient.Port = 25;
            //smtpClient.UseDefaultCredentials = true; //smtpClient服务器不需要验证的方式
            smtpClient.Credentials = new NetworkCredential("发件人用户名","密码");
            smtpClient.Send(mailMessage);
 
    }
    
    void Application_Start(object sender, EventArgs e) 
    {
 
         tm = new System.Threading.Timer(ShowMessage,a,0,1000*60*60*24);
        //在应用程序启动时运行的代码

    }
    
    void Application_End(object sender, EventArgs e) 
    {
        tm.Dispose();
        //在应用程序关闭时运行的代码

    }
        
    
       
</script>

我已经测试过了! --------------------编程问答-------------------- --------------------编程问答--------------------
引用 2 楼 sprc_lcl 的回复:
写一服务程序,window service


写一个Windows服务,定期从用户表中查询出当天过生日的用户,然后发送邮件过去,对于已经发送过的用户需要加一个已发送标识。
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,