Как сделать уведомление по электронной почте, как календарь Google? - PullRequest
0 голосов
/ 06 июля 2010

Я использую

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

Я хочу создать систему уведомлений по электронной почте, как это делают многие сайты, например, Google. Я хочу, чтобы пользователь мог установить дату напоминания, и когда эта дата будет достигнута, ему будет отправлено электронное письмо.

Я не уверен, как это сделать.

Я слышал о нескольких способах, но не нашел ни одного учебника о том, как их сделать.

  • Планировщик Windows
  • через ms sql server (думаете, sql server agent?)

С планировщиком Windows я не думаю, что он будет работать в среде общего хостинга. Я бы предпочел, если бы это было так, но если есть большая разница, тогда я могу жить без этой способности.

Я также хочу в самое ближайшее время поддерживать SMS-сообщения, поэтому решение должно быть в состоянии расширяться для работы с этим, если это возможно.

Ответы [ 2 ]

1 голос
/ 06 июля 2010

Это сообщение в блоге представляет очень эффективное (хотя и несколько «хакерское») решение вашей проблемы, которое будет работать в среде общего хостинга. Это то, что Джефф использовал в StackOverflow для назначения значков пользователям (хотя я не знаю, использует ли он его до сих пор).

Чтобы код действительно отправлял электронное письмо, вам следует поискать в Интернете, поскольку есть бесконечные примеры кода о том, как это сделать. Один из возможных ответов может быть:

    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);
        }

Посмотрите, поможет ли это

0 голосов
/ 06 июля 2010

@ chobo2, вы можете использовать quartz.net для проверки выполнения задач (скажем, каждую минуту) и выполнения некоторых действий (например, отправка электронного письма), когда срок выполнения задачи меньше, чем текущая дата и задача не были уведомлены.

Таким образом, у вас должно быть свойство даты выполнения в вашем задании и бит, указывающий, было ли оно уведомлено. Каждую минуту вы запускаете код, который ищет задачи со сроком выполнения, меньшим или равным текущей дате, и для каждой из них вы отправляете уведомление по электронной почте. Затем вы помечаете задачу как уведомленную.

Привет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...