Ciao a tutti,
ho la necessità di inviare le mail generate dal sito in blocchi al max da 50 ogni 15 min, piuttosto che di continuo.

Per risolvere questa mia necessità ho attuato questo script.
Dico subito però dove stanno i miei dubbi e problemi:
- Idee sui controlli antispam?
- Problemi nella gestione dei tempi: valida l'operazione di sottrazione tra campi di tempo tipo gg/mm/aaaa - hh:mm:ss?

Il codice
codice:
Function inviaMail(pagina,mittente,destinatario,titolo,corpo)
 'Struttura Database:
 '|id|pagina|ip|tempo|mittente|destinatario|titolo|corpo|inviato|
 '|(+1)| txt|txt|gg/mm/aa-hh:mm|    txt	   | txt  |txt  | (0)	|
 'Controlli
 If controlli=ok Then '<-Ad Esempio?
  'Inserisci in database
  sql="INSERT INTO SITO_INVIAMAIL (pagina,ip,tempo,mittente,destinatario,titolo,corpo) VALUES " & _
  "('" & Replace(pagina,"'","''") & "', " & _
  "'"&Request.ServerVariables("REMOTE_ADDR")&"', " & _
  "'"& year(now)&"-"&month(now)&"-"&day(now)&" "&hour(now)&":"&minute(now)&":"&second(now)&"', "
  "'" & Replace(mittente,"'","''") & "', " & _
  "'" & Replace(destinatario,"'","''") & "', " & _
  "'" & Replace(titolo,"'","''") & "', " & _
  "'" & Replace(corpo,"'","''") & "');"
  Conn.Execute(sql)

  'Prendi le informazioni:
  sql="SELECT * FROM SITO_INVIAMAIL WHERE INVIATO=0 ORDER BY ID DESC"
  rs.open sql, conn
  If not rs.eof Then
    spedire=rs.GetRows()
  End If
  rs.close
  If Ubound(spedire)>0 Then
   If spedire(3,Ubound(spedire))-spedire(3,0)>15min Then '<- Coome indicare i 15 minuti? E' valida una operazione simile?
    If UBound(spedire)<50 Then
	 i=Ubound(spedire)
	Else
	 i=50
	End If
	ii=0
	Set objMail = CreateObject("CDONTS.Newmail")
	Do While ii<i 
	  'Spedisci mail
		objMail.From = spedire(4,ii)
		objMail.To = spedire(5,ii)
		objMail.Subject = spedire(6,ii)
		TestoBody = spedire (7,ii) & vbCrLf & vbCrLf& "Browser: "& Request.ServerVariables("HTTP_USER_AGENT") & " | IP: " & Request.ServerVariables("REMOTE_ADDR")
		objMail.Body = TestoBody
		objMail.Send
		Set objMail = Nothing
		'Setto come inviato il messaggio
		sql="UPDATE SITO_INVIAMAIL SET inviato=1 WHERE id="	&ii
		Conn.Execute(sql)
	Loop
	Set objMail = Nothing
   End If
  End If
  inviaMail="OK"
 Else
  inviaMail="Attenzione errori!"
 End If
End Function
Fatemi sapere cosa ne pensate, se avete dei suggerimenti.. etc.

Grazie