Coda email verso yahoo

di il
6 risposte

Coda email verso yahoo

Ciao a tutti, dovrei implementare una funzionalità che consenta di creare una coda di email e che le spedisca singolarmente con un intervallo di tempo tra una e l'altra, l'applicazione è un forum in asp .net core ed alla registrazione produco un email con un token di verifica ,attualmente ho scritto una classe EmailManager che possiede un metodo SendSingleEmail ma basta accodarne due e la seconda fallisce la connessione
 EmailManager e = new EmailManager();
                    e.SendSingleEmail(from, to, subject, message, host, port,pwd);
                    e.SendSingleEmail(from, to, subject, message + " second", host, port, pwd);


cosi partono entrambe:
EmailManager e = new EmailManager();
                    e.SendSingleEmail(from, to, subject, message, host, port,pwd);
                    Thread.Sleep(1000);
                    e.SendSingleEmail(from, to, subject, message + " seconda", host, port, pwd);
vorrei aggiungere un servizio singleton ai services ed un metodo che crei una coda che mi permetta di accodare le email e spedirne ,ad esempio,una ogni due secondi e che abbia un meccanismo di retry , avete qualche suggerimento su come costruire la coda ? , grazie,ciao

6 Risposte

  • Re: Coda email verso yahoo

    surfernet ha scritto:


    vorrei aggiungere un servizio singleton ai services ed un metodo che crei una coda che mi permetta di accodare le email e spedirne ,ad esempio,una ogni due secondi e che abbia un meccanismo di retry , avete qualche suggerimento su come costruire la coda ? , grazie,ciao
    Innanzitutto, prevederei uno "storage" dove mettere i messaggi della coda, che può essere una tabella di database o qualsiasi altro "repository" nel quale salvare i messaggi da inviare.

    Il delay andrei poi a determinarlo assegnando ai messaggi una data/ora di spedizione, distanziando questo dato con il lasso di tempo corretto per l'invio.

    Infine, implementerei un gestore della coda che fornisca metodi per inserire i messaggi dall'applicazione e metodi per estrarre i messaggi da inviare, magari creando un servizio a parte che si occupa di rilevare i messaggi pronti per l'invio, gestire i retry, applicare i delay e così via; in breve, il programma principale inserisce nella coda, salvando i messaggi in modo persistente, mentre il servizio "pesca" da tale coda effettuando l'invio fisico con gestione degli errori, ripetizione degli N tentativi configurati, contrassegno dei messaggi correttamente spediti, data/ora effettiva di inserimento, di invio, di ultimo tentativo di spedizione e così via.

    Ciao!
  • Re: Coda email verso yahoo

    Innanzitutto grazie per aver risposto , interessante la "struttura" da te suggerita , per il servizio che "pesca" pensavo ad un timer che legga il più vecchio dei messaggi email non spediti salvati nel db e lo spedisca , che ne pensi? ,
    grazie ancora , ciao
  • Re: Coda email verso yahoo

    surfernet ha scritto:


    Innanzitutto grazie per aver risposto , interessante la "struttura" da te suggerita , per il servizio che "pesca" pensavo ad un timer che legga il più vecchio dei messaggi email non spediti salvati nel db e lo spedisca , che ne pensi?
    Se fai un servizio Windows, puoi anche gestirlo con un ciclo banale che effettua la verifica, magari con un Thread.Sleep() con valore più o meno lungo, a seconda dell'intervallo di controllo o della pausa che vuoi inserire tra una iterazione e l'altra, dove magari verifichi se è giunto il momento di inviare le email.

    Un Timer è del tutto facoltativo e superfluo.

    Ciao!
  • Re: Coda email verso yahoo

    Occhio al servizio windows , non è banalissimo concepirlo
    perchè deve avere almeno un altro 'thread di lavoro' oltre al principale;

    detto in altre parole, il thread principale crea ed inizializza il thread di lavoro
    perchè dopo deve essere libero di rispondere alle richieste del Service Control Manager
    se arrivano richieste di stop/restart del servizio
    ( ed in caso di richiesta stop il thread di lavoro dovrebbe fermarsi 'gentilmente' per quanto possibile)

    Documentati su questi aspetti ed anche sull'eventuale timer da usare perchè ce ne sono diversi nel .Net FW
    e , per esempio , il Timer che metteresti in un window form non va bene per il servizio window

    HTH
  • Re: Coda email verso yahoo

    Grazie dei suggerimenti ,
  • Re: Coda email verso yahoo

    Vedi tu ... tra hangfire o servizio windows quacosa si tira fuori

    Facci sapere come va a finire
Devi accedere o registrarti per scrivere nel forum
6 risposte