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
Fatemi sapere cosa ne pensate, se avete dei suggerimenti.. etc.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
Grazie![]()



Rispondi quotando