я думаю, что есть решение:
1 - вам нужно добавить 2 столбца в пользовательской таблице в вашей sql db, если у вас есть пользовательская таблица, и в первом столбце добавить дату последнего отправленного электронного письмапользователю, а во втором столбце есть период для отправки электронного письма этому пользователю, например: LastEmailSentDate datetime SendEmailPeriod int
2 - в коде вашего приложения напишите функцию, которая сравнивает последнюю дату последнего отправленного электронного письма спериод отправки письма.
// здесь код функции
public void CompareLastSentDate()
{
// lets assume that you bring the data for the db using Sqdatareader reader
//get the field from the LastEmailSentDate field in the database as i mention before
DateTime LastEmailSentDate = Convert.ToDate(reader["DatePeriod"])
// get the field from the SendEmailPeriod of the user field from database
int sendEmailPeriod = Convert.Toint32(reader["SendEmailPeriod"])
// now you have the date before the period of day ex: before 3 days depend on user
DateTime DatePeriod = new DateTime(DateTime.Now.Year, DateTime.Now.Month, (DateTime.Now.Day - sendEmailPeriod ));
// if the last email send is before period of day that mean u have to send an email again
if(LastEmailSentDate.Day <= DatePeriod.Day)
{
// sent the email to the user
}
}
примечание: теперь вы можете зацикливаться среди пользователей и отправлять письма
вы можетевызывайте эту функцию один раз в день, вызывая ее из события Page_Load домашней страницы вашего приложения, и после первого вызова дня добавьте флаг приложения ["LastFunctionCallDate"] = DateTime.Now, чтобы в следующем вы могли проверить этот флаг, если его == сегодня, а если нет, позвоните еще раз