Errore recupero corpo email in newsletter

marco75sa

Nuovo Utente
19 Set 2008
22
0
0
Sto utilizzando lo script pubblicato su questo articolo:
http://www.aspcenter.net/articoli/173.asp

ho notato però che quando tento di recuperare il corpo della mail con una request.form(....) le mail vengono stoppate al primo loop che si genera.

Se invece scrivo un testo fittizzo nella variabile "messaggio" quindi senza recuperare il corpo della mail con request.form allora funziona tutto.

Come faccio a recuperare, appunto, il contenuto della mail da inviare?
 
Quando ho creato lo script ho fatto anche il test recuperando i dati dal form e lo stesso script l'ho usato per le newsletter di alcuni clienti, senza problema.

Strano.

In che senso "l'invio viene stoppato"?
 
nel senso che tu dividi le email per blocchi di 50 (o quanto previsto dalla variabile "quante".
Vengono inviate tutte le email fino al primo loop quindi le prime 20.
Successivamente non viene inviato nulla. Come se quando refresha la pagina con il response.redirect non si legge più il contenuto della variabile "messaggio" restituendo quindi un valore nullo e applicando quindi lo stop previsto dall'istruzione

If messaggio <> "" Then
Session("messaggio") = messaggio
Else
Response.End
End If


Sotto ti elenco quanto scritto:
<%@LANGUAGE = VBScript%>
<%
' Recupero tutte le variabili per l'applicazione
Dim messaggio, pag, cn, rs, quante, tot, i, email

' Recupero il corpo della mail
messaggio = request.form("corpoemail")

' 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 "driver={Microsoft Access Driver (*.mdb)};dbq="& server.MapPath("supporter.mdb")

' Lancio la query
rs.Open "SELECT email FROM users", cn, 1

' Predispongo la paginazione
quante = 20
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 = "info@blblba.com"
email.To = rs("email")
email.Subject = "Newsletter del " & Date()
email.HtmlBody = ""&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)
%>
 
In sostanza mi dici che la sessione muore da pagina 2 in poi...

Prova a fare cosi: invece di connetterti al database ed a inviare le email, stampa a video la sessione (valorizzata dal recupero dal modulo) e blocca l'esecuzione dello script con Response.End se:

If pag > 1

Fammi sapere.
 
potresti indicarmi lo script da mettere? Magari mi modifichi quello che ho pubblicato prima così copio e incollo...
Sorry
:D
grazie
 
Prova cosi:

<%@LANGUAGE = VBScript%>
<%
Dim messaggio, pag, cn, rs, quante, tot, i, email

messaggio = request.form("corpoemail")

pag = Request.QueryString("pag")
If IsNumeric(pag) = False Or pag < 1 Then pag = 1

If messaggio <> "" Then
Session("messaggio") = messaggio
Else
Response.End
End If

Response.Write Session("messaggio")

If pag > 1 Then Response.End
%>
<script type="text/javascript">
document.location.href = "nomefile.asp?pag="<%=pag+1%>;
</script>

Fammi sapere!
 
Ultima modifica:
Mi viene visualizzata a video solo il contenuto della mail cioè quello che scrivo nel form.
Se scrivo "test", dopo aver fatto invio dalla form mi esce a video "test".
Tutto qui...
 
in più vedo anche un errore di JS.

Se visualizzo l'html nella pagina vedo:

test
<script type="text/javascript">
document.location.href = "issupp_ok.asp?pag="2
</script>
 
ora:
vedo per un secondo quello che ho scritto nella mail (form), poi scompare.

Il link dove finisce è:
newsletter.asp?pag=2
 
Quindi abbiamo la conferma che la sessione muore dopo pagina 1... ma il primo blocco lo invia, esatto?

Dimmi se sbaglio.

Intanto riguardo il codice e tento di capire se c'è qualcosa che da fastidio alla sessione.
 
esatto. Invia il primo blocco. Poi quando passa al secondo muore la sessione.
Se invece nella variabile del corpo del messaggio scrivo "a mano" un testo fittizio e non recupero con request.form allora funziona.
E' come se non leggesse il request.form dal secondo in poi...
 
E' come se... ma non esattamente.

Penso che il problema sia che, a pagina 2, viene di nuovo eseguito il Request.Form che è vuoto!

Prova a sostituire questo:

messaggio = request.form("corpoemail")

con questo:

If pag = 1 Then
messaggio = request.form("corpoemail")
End If

DOVREBBE andare.

Fammi sapere!
 

Discussioni simili