18 messaggi dal 17 gennaio 2011
Buonasera,
vorrei creare un serivio windows che ad una determinata ora del giorno invii una mail.
Creato un servizio su visual studio, messa la funzione di invio email in OnStart, installato il servio e all'avvio la mail parte senza problemi.
Adesso vorrei che questo servizio avviato ogni giorno alle 10.00 invii la mail.
Dove metto questo controllo? Sempre nella funzione OnStart? Oppure c'è un metodo del servizio specifico?

Grazie
10.225 messaggi dal 09 febbraio 2002
Contributi
Ciao Luigi,
dato che devi inviare la mail ad una specifica ora del giorno, potresti spostare il tuo codice in un'applicazione console che fai partire con un'operazione pianificata di Windows che si avvia ogni giorno alle 10.00.

In alternativa, se vuoi continuare ad usare un servizio per Windows, non puoi inviare la mail all'OnStart. Dovrai invece creare un timer in questo modo ed inviare la mail alla sua scadenza.

//Vogliamo inviare la mail alle 10
var time = TimeSpan.Parse("10:00");

//Quand'è la prossima esecuzione? oggi o domani?
var nextExecution = DateTime.Today.Add(time);
var now = DateTime.Now;
//Se l'orario è già trascorso, allora è domani
if (nextExecution < now)
    nextExecution = nextExecution.AddDays(1);

//Quanti millisecondi mancano alla prossima esecuzione?
var dueTime = Convert.ToInt32((nextExecution - now).TotalMilliseconds);

//Avviamo il timer
var timer = new System.Threading.Timer(
    callback: SendMail,
    state: null,
    dueTime: dueTime,
    period: 24*60*60*1000); //ripeti ogni giorno


Il metodo SendMail sarà una normale funzione fatta così in cui invierai la mail:
private static void SendMail(object state)
{
    //qui invia la mail
}


ciao,
Moreno
Modificato da BrightSoul il 07 settembre 2017 19.05 -

Enjoy learning and just keep making
18 messaggi dal 17 gennaio 2011
Buongiorno,
grazie mille per la risposta.

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.