如何实现系统自动根据用户生日时间发邮件到用户注册的邮箱
想问一个问题:有这样一个网站系统,用户注册时填写了生日时间。
当用户过生日的时候,系统当天自动给这个人发送一封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>
我已经测试过了! --------------------编程问答-------------------- --------------------编程问答--------------------
写一个Windows服务,定期从用户表中查询出当天过生日的用户,然后发送邮件过去,对于已经发送过的用户需要加一个已发送标识。
补充:.NET技术 , ASP.NET