如何制作像谷歌日历这样的电子邮件通知程序?

时间:2010-07-06 03:26:50

标签: c# .net sql asp.net-mvc email

我正在使用

  • asp.net mvc 2.0
  • C#
  • .NET 4.0
  • ms sql server 2005
  • iis 7.0

我想制作一个电子邮件通知程序系统,就像许多网站有谷歌一样。我希望用户能够设置提醒日期,当该日期被点击时,会向他们发送电子邮件。

我不知道该怎么做。

我听说过几种方法,但没有找到任何有关如何操作的教程。

  • Windows计划程序
  • 通过ms sql server(想想sql server agent?)

使用Windows调度程序,我认为它不适用于共享托管环境。如果有的话我会更喜欢,但如果有很大差异,那么我就可以忍受这种能力。

我还希望在不久的将来支持SMS消息,以便解决方案应该能够扩展以便尽可能地使用它。

2 个答案:

答案 0 :(得分:1)

这个blog post为您的问题提供了一个非常有效(虽然有些“hacky”)解决方案,可以在共享托管环境中运行。这是Jeff在StackOverflow中用来为用户分配徽章的内容(我不知道SO是否仍在使用它)。

对于实际发送电子邮件的代码,您应该浏览Internet,因为有无穷无尽的代码示例如何执行此操作。一个可能的答案可能是:

    public void SendEmail()
    {
        MailMessage loMsg = new MailMessage();

        loMsg.From = new MailAddress("from@domain.com");
        loMsg.To.Add(new MailAddress("to@domain.com"));
        loMsg.Subject = "Subject";
        loMsg.Body = "Email Body";


        var smtp = new SmtpClient
        {
            Host = "smtp.gmail.com",
            Port = 587,
            EnableSsl = true,
            DeliveryMethod = SmtpDeliveryMethod.Network,
            UseDefaultCredentials = false,
            Credentials = new System.Net.NetworkCredential("username", "password")
        };

        smtp.Send(loMsg);
        }

看看是否有帮助

答案 1 :(得分:0)

@ chobo2,您可以使用quartz.net检查到期任务(例如,每一分钟),并在任务的截止日期小于当前日期时执行某些操作(如发送电子邮件)任务没有得到通知。

因此,您必须在任务中拥有截止日期属性,并指出是否已通知。 每分钟,您运行代码以查找截止日期小于或等于当前日期的任务,并为每个任务发送通知电子邮件。然后将任务标记为已通知。

问候。