Evitare il timeout in ASP nell’invio delle newsletter

newsletter aspGestendo sistemi di newsletter on-line è capitato che durante l’invio di grandi quantitativi di mail il server non cempleti correttamente l’operazione poichè la pagina contenente il codice per sperire la newsletter và in timeout; a giudicare da quanti post ho trovato sui vari form pare che il problema non riguardi solamente me ma che affligga anche altri sviluppatori web.

Il mio script ASP di generazione e spedizione della mail leggeva un elenco di destinatari da un Database e li inseriva nel campo CCn delle mail spedite in modo che ognuno ricevesse una mail ma non vedesse gli altri destinatari; l’aumentare del numero di destinatari appesantiva il sistema e mandava il timeout lo script. Ho così deciso di suddividere la spedizione in più parti modificando la pagina di invio in modo tale che esegua il seguente ciclo, scritto in un linguaggio un pò particolare , a coi il compito di tradurlo in ASP:

  1. Conto il numero di mail da spedire
  2. if request.querystring(numero mail inviate) <>”” then
    cicla 5000 volte o finchè non percorre tutto il recordset i nomi e li mette in ccn
    spedisce le mail
    numero mail inviate= numero mail inviate + 5000
    else
    scorre il record per il numero di mail spedite inviate
    cicla 5000 volte o finchè non percorre tutto il recordset i nomi e li mette in ccn
    spedisce le mail
    numero mail inviate = numero mail inviate + 5000
  3. if numero totale delle mail inviate è < del numero di record
    response.redirect alla stessa pagina.asp?numero mail inviate=numero mail inviate
    else
    operazione conclusa

In pratica una volta letto il numero di destinatari invio il primo lotto di mail, se non ho superato il numero totale dei destinatari ricarico la stessa pagina con il numero di mail spedite in precedenza, numero che utilizzetò per scorrere il record e sapere da quale indirizzo ripartire a spedire il secondo lotto di indirizzi, tale numero viene ripassato alla stessa pagina tramite l’url.

Lascia un commento