Вы можете иметь программу, которая работает постоянно и имеет таймер или цикл, который проверяет время суток, а затем спит в течение очень долгого времени, а когда таймер выключается или наступает подходящее время суток, он отправляет электронное письмо. или вы можете запустить программу как запланированное задание. Первый метод также может быть реализован как сервис, если хотите. Помните, что вам не нужен ASP.Net для отправки электронной почты, все, что вам нужно, это консольное приложение, которое использует System.Net.Mail. Посмотрите пример почтовой программы на MSDN для очень простой идеи.
Еще одна вещь, которую вы можете рассмотреть: в IIS есть служба smtp, которую вы можете установить, и она использует каталог раскладки для отправки почты. Вы пишете электронное письмо в каталог раскладки в виде файла .eml, а IIS захватывает его и отправляет почти сразу. Если вы это сделаете, вам все равно придется писать электронные письма (System.net.Mail будет записывать файлы .eml из MailMessage, просто установите SmtpClient.DeliveryMethod в SpecifiedPickupDirectory или PickupDirectoryFromIIS и вызовите SmtpClient.Send), но затем он отправит их для вас. Вам все равно нужно будет что-то запланировать, чтобы это было не так уж и полезно, но я подумал, что по крайней мере дам вам знать, что это существует.
Следует помнить одну вещь: когда служба SMTP IIS считывает конверт отправки файла .eml, порядок заголовков Отправитель и От имеет значение; если заголовок From появляется перед заголовком Sender, то команда MAIL FROM будет использовать заголовок From, что неверно (и MS не исправит этот). Похоже, что это проблема ТОЛЬКО со службой IIS SMTP, так как об этом больше нигде не сообщалось, о чем я знаю. Изменение порядка заголовков - это обходной путь. По умолчанию SmtpClient всегда записывает заголовок From первым. Я знаю об этой проблеме, и IIS ее не исправляет, но, возможно, я смогу получить исправление в SmtpClient для сборки .NET 4.0 RC, которое переупорядочивает заголовки для вас, но без обещаний.