Приложение ASP.NET MVC + SQL Server: лучший способ отправлять уведомления по электронной почте на основе событий

У меня есть приложение ASP.NET MVC, которое использует NHiberante и SQL Server 2008 на сервере. Есть требования для отправки обоихсобытийного уведомления на ежедневной / еженедельной основе ИГенеральная уведомления на еженедельной основе.

Вот пример того, как должен работать управляемый событиями рабочий процесс:

Сотрудники создают несколько заказов на покупку.Уведомление по электронной почте отправляется ежедневно любому руководителю с подчиненным сотрудником, который сделал заказ на покупку со списком всех заказов на покупку, созданных подчиненными, которые требуют его одобрения. Супервайзер должен получить это только один раз (например, если Сотрудник A создает PO, его супервайзер не должен получать электронное письмо КАЖДЫЙ ДЕНЬ, пока он не одобрит). Кроме того, список заказов на поставку должен включать ТОЛЬКО те, против которых супервизор НЕ предпринял никаких действий. Если никакие заказы на покупку не требуют одобрения данного руководителя ... они не должны получать электронную почту.Уведомление по электронной почте отправляется ежедневно менеджерам департамента со списком всех заказов на покупку, УТВЕРЖДЕННЫХ подчиненными руководителями, аналогично # 2 выше.Каждый раз, когда предпринимаются какие-либо действия в отношении одобрения заказа супервайзером или отделом. Менеджер, сотрудник должен получать по электронной почте уведомление ежедневно с перечислением ВСЕХ таких изменений. Если для данного сотрудника их нет, они вообще не должны получать электронную почту.

Итак, учитывая такой рабочий процесс:

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

Спасибо!

Ответы на вопрос(5)

Ваш ответ на вопрос