- Home
- Categorie
- Coding e Sistemistica
- Altri linguaggi per il web
- ritardare invio email asp
-
ritardare invio email asp
Ciao a tutti...
ho questo problema...invio periodicamente una newsletter ai nostri inscritti tramite uno script da me modificato. Praticamente prende gli indirizzi da database e le invia ad una ad una.
Lo script funziona perfettamente, nessun errore e la maggior parte delle email arrivano a destinazione.
Quello che avrei bisogno e di fare in modo che dopo ogni email inviata lo script si metta in pausa per 5-10 secondi e riprenda in modo da evitare che alcuni domini classifichino la mail come spam.
Ho visto che in php c'e' una funzione "sleep" ma non riesco a trovare qualcosa del genere in Asp.Grazie mille
-
Basta cercare su GG "sleep asp"
-
ho provato ma non ho trovato nulla
-
Usi SQL server?
Nel caso: http://classicasp.aspfaq.com/general/how-do-i-make-my-asp-page-pause-or-sleep.html
-
In effetti quello che tenti di fare non credo sia possibile. Infatti, poichè la tecnologia ASP non supporta nativamente il multithreading, non puoi creare uno script che, in maniera asincrona, invia mail e aspetta un tempo fissato. Dovresti inoltre settare un server.timeout che dipende dal numero di mail da inviare e che probabilmente eccede i limiti massimi prestabiliti.
Per piccoli ritardi (dell'ordine di pochi secondi) potresti utilizzare questa funzione:
<% function bSleep() Set WScript = Server.CreateObject("WScript.Shell") WScript.Sleep 2000 end function %>
Sempre che il tuo hoster non abbia bloccato, come sicuramente avrà fatto, l'utilizzo dell'oggetto WScript.Shell (cioè il controllo completo del server da linea di comando...)
Perciò mi sa che dovrai abbandonare l'idea.
PS: Perchè ti dovrebbero considerare come spammer? ha molti utenti che hanno lo stesso server di posta (SMTP)? Potresti distribuire la sequenza di mail inviate in modo tale che i server di posta siano "abbastanza" sparsi ed evitare blocchi di mail cha hanno tutte la stessa stringa dopo la chiocciola...;)
-
@madai said:
Usi SQL server?
Nel caso: http://classicasp.aspfaq.com/general/how-do-i-make-my-asp-page-pause-or-sleep.html
sono su windows server 2003 IIS 6
Grazie per le risposte, vi allego copia dello script e se potete indicatemi come modificarlo inserendo la pausa tra do while e loop
<%
mittente=request("mittente")
corpo1=request("Email")
oggetto=request("Oggetto")
provincia1=request("provincia")
dim numero
numero= 1
DIM invioA, invioDa
%>
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq="&server.mappath("/miodatabase.mdb")sql = "SELECT email FROM email where provincia like '%" & provincia1 & "%' "
Set RS = Conn.Execute(SQL)
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sql, conn, 3, 3
do while not rs.eofinvioA = rs("email")
'* voce da modificare con un indirizzo email che funga da mittente: '* in caso di errore riceverete notifica a questo indirizzo un MAILER-DAEMON '* dato che cdosys supporta questa notifica
invioDa = "mia@email"
'* creo gli oggetti cdosys sul server e li gestisco
Dim iMsg
Dim iConf
Dim Flds
set iMsg = CreateObject("CDO.Message")
set iConf = CreateObject("CDO.Configuration")
Set Flds = iConf.Fields
Flds("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
Flds("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "localhost"
Flds("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 8025
Flds("http://schemas.microsoft.com/cdo/configuration/urlgetlatestversion") = True
Flds.UpdateWith iMsg
Set .Configuration = iConf
.CreateMHTMLBody corpo1
.To = invioA
.From = mittente
.Subject = oggetto
.Send
End With
numero=numero+1
rs.movenext
loop
RS.Close
Set RS=Nothing
conn.Close
Set conn=Nothing%>
Grazie aspetto vostre notizie
-
Io credo che l'unica soluzione da te applicabile sia quella di creare una funzione che fa un loop fino a quando la differenza tra il time() iniziale e quello dell'inizio di un nuovo ciclo non sia pari ai 5 secondi che richiedi. Questa applicazione però utilizzerà molte risorse del server, è quindi sconsigliabile.
Perchè non applichi il consiglio di paocavo?
Potresti distribuire la sequenza di mail inviate in modo tale che i server di posta siano "abbastanza" sparsi ed evitare blocchi di mail cha hanno tutte la stessa stringa dopo la chiocciola.
-
questo l'ho già fatto, nel senso che ho diviso in blocchi di 200 ma il problema rimane..
se invece decidessi di convertire lo script in php? purtoppo a differenza di asp lo conosco pochissimo, sapreste aiutarmi in questo?