Если у вас есть доступный SMTP-сервер, вы можете использовать SMTP-клиент, который является частью .net framework.
Вы можете установить демон в методе Application_Start файла Global.asax.cs, который может ежедневно проверять наличие истекающих контрактов, а затем отправлять SMTP-сообщения о контрактах, срок действия которых истекает.
Нечто подобное может подойти:
// this is System.Threading.Timer
_timer = new Timer(x =>
{
var listOfExpiringContracts = GetContractsThatAreAboutToExpire();
if (listOfExpiringContracts.Count > 0)
{
SendEmailToOtherDepartmentRegardingContractsThatAreAboutToExpire(listOfExpiringContracts);
}
}, null, GetNextTimeToCheckForExpiringContracts().Subtract(DateTime.Now), TimeSpan.FromDays(1));