Inviare una Newsletter con paginazione in ASP | |
![]() |
|
|
ASP Center
Articoli
Referenze
Script
FAQ
Downloads
Siti utili
Menu Javascript
Ricette
Cocktail
Corsi online
Registrazione domini
Area Aziende
|
Inviare una Newsletter con paginazione in ASP
Concesso in esclusiva a Mr.Webmaster. Vietata la riproduzione.
L'invio di una Newsletter in ASP comporta non pochi problemi, specialmente per siti con un database di utenti ricco ed a maggior ragione se il database in questione è MS Access.
Vediamo cosa succede quando inviamo una Newsletter: ci connettiamo al database, estraiamo le centinaia o migliaia di record presenti, li memorizziamo nel campo nascosto del CDOSYS ed inviamo un'unica mail. Nascono tre problemi regolandosi in questo modo:
L'unico sistema professionale per utilizzare ASP e, volendo, anche un database MS Access ed essere sicuri (mai al 100%) di non incorrere in nessuno dei tre problemi discussi in precedenza, è quello di utilizzare il sistema della paginazione con ADO nell'estrazione degli indirizzi email degli utenti e per l'invio della mail. Vediamo un semplice esempio. Si crei il file newsletter.asp e lo si corredi del seguente codice, corredato da opportuni commenti:
<%@LANGUAGE = VBScript%>
<%
' Recupero tutte le variabili per l'applicazione
Dim messaggio, pag, cn, rs, quante, tot, i, email
' Recupero il corpo della mail
messaggio = "Corpo della mail da recuperare da un form..."
' Recupero e controllo il numero di pagina corrente
pag = Request.QueryString("pag")
If IsNumeric(pag) = False Or pag < 1 Then pag = 1
' Memorizzo il messaggio in una sessione per disporne
If messaggio <> "" Then
Session("messaggio") = messaggio
Else
Response.End
End If
' Mi connetto al database
Set cn = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
cn.Open ' QUI LA STRINGA DI CONNESSIONE
' Lancio la query
rs.Open "SELECT email FROM newsletter", cn, 1
' Predispongo la paginazione
quante = 50
rs.CacheSize = quante
rs.PageSize = quante
rs.AbsolutePage = pag
tot = CInt(rs.PageCount)
i = 0
' Invio le mail una alla volta a blocchi da 50
Do While Not rs.EOF
Set email = Server.CreateObject("CDO.Message")
email.From = "news@miosito.ext"
email.To = rs("email")
email.Subject = "Newsletter del " & Date()
email.TextBody = Session("messaggio")
email.Send
Set email = Nothing
i = i + 1
If i = quante Then Exit Do
rs.MoveNext
Loop
' Un po di pulizia
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
' Mi sposto al blocco della pagina successiva
If CInt(pag) < CInt(tot) Then
Response.redirect "newsletter.asp?pag=" & CInt(pag) + 1
End If
' Monitorizzo il numero di pagina corrente
Response.write ("Pagina corrente: " & pag)
%>
I commenti di per se sono abbastanza esplicativi relativamente al sistema immaginato, ma per chiarezza ritengo opportuno esplodere alcuni passaggi e capirli meglio.Il file newsletter.asp si limita ad eseguire l'invio della mail, ma la variabile messaggio in realtà dovrà essere valorizzata dai dati recuperati da una textarea di un form HTML, residente evidentemente in un altro file ASP. Memorizziamo il messaggio in una variabile di sessione allo scopo di non perderne il valore man mano che lo script si sposterà automaticamente alla pagina successiva. Utilizziamo il ciclo Do al posto del While allo scopo di poter disporre del comando di interruzione Exit. Lo scopo dello script è quello di risparmiare le risorse del sistema server in uso, oltre a quello di accertarsi di raggiungere il massimo numero di utenti possibile: il successo di questo proposito è dato dal fatto che lo script appena presentato invia una mail alla volta a blocchi di 50 (quanto stabilito nella variabile quante e si consiglia di non aumentare il numero) dopo di che ci si sposterà alla pagina successiva dove viene inviato un nuovo blocco di email, fino alla fine dei record presenti nel database. |
Newsletter
Stringhe di Conn.
|
||
| © 2008 ASP Center di Luca Ruggiero - P. IVA 05564851219 - Utenti online: 28 - Disclaimer | Pubblicità | Supportaci | Staff | Contatti | ||||
| Appunti PHP | Giornale Webmaster | Mr.Webmaster | Download | DevSpy.com | ASPCode.it | ClaudioGarau.it | Webmaster Facile | Come Faccio | AlVerde.net | CodiceFacile.it | I Programmatori | By Luciani | VoiceXML Italian User Group | Giochi | Extro Web Site | Morpheus Web | AG Web Solutions | Net-Free | PC Sicuro | PC Self | Tutorial Web | Dablones | ||||