Jak zrobić żeby aplikacja sama wysyłała email w określonym czasie, użytkownik podaje datę i godzinę i np. na 2 godziny przed ustalonym terminem aplikacja wysyła do niego maila? Mógłby mnie ktoś naprowadzić?
A to musi być aplikacja webowa? Będzie to trudno osiągnąć. Prościej napisać Windows Service, albo zwykłą konsolową aplikację odpalać z harmonogramu zadań.
@lc90, dlaczego?
Też miałem kiedyś podobny problem, rozwiązaniem jest odpalenie dodatkowe wątku który zajmie się wysyłaniem emaila. Na stacku znalazłem takie rozwiązanie:
ThreadPool.RegisterWaitForSingleObject(new AutoResetEvent(false),
(state, timeout) => { /* TWOJA LOGIKA WYSYŁAJĄCA MAILA*/ },
null, TimeSpan.FromMinutes(1), false);
Odpalasz to w metodzie
Application_Start()
Złym zwyczajem jest wykonywanie okresowo zadań wewnątrz aplikacji webowej.
Do tego powinien być używany osobny serwis.
Jeżeli pomimo wszystko będziesz robił scheduler wewn. aplikacji webowej to w konfiguracji IISa stwórz sobie osobną pulę i wyzeruj wszystkie dla niej wszystkie idle TimeOuty, bo zwyczajnie uśpi Ci pulę przy braku żądań http.
micc napisał(a):
Jeżeli pomimo wszystko będziesz robił scheduler wewn. aplikacji webowej to w konfiguracji IISa stwórz sobie osobną pulę i wyzeruj wszystkie dla niej wszystkie idle TimeOuty, bo zwyczajnie uśpi Ci pulę przy braku żądań http.
Co i tak nie daje gwarancji, że pula będzie stała wiecznie. Dlatego jednak lepiej mieć osobny serwis.
Dobra to chyba oleje to wysyłanie maili jeśli tyle z tym problemów ale wpadłem na inny pomysł, da się to zastąpić przez stworzenie tabeli przechowującej wiadomości i dodawaniu do niej rekrodów za pomocą joba(nie jestem pewien czy to do tego służy) albo czegoś innego?