Ti invio per email i file.
Ho rielaborato completamente la successione degli eventi per poter soddisfare la tua richiesta.
Il file è composto da 4 step:
. lo step 1 si occupa di inserire in una tabella del db gli ID degli utenti presenti nella cartella "allegato"
Codice:
' ---------------------------------------------------------------------------------
' STEP 1
If step = 1 Then
periodos = "allegati"
' conto numero file
set fs = Server.CreateObject("Scripting.FileSystemObject")
' set fo = fs.GetFolder("C:\inetpub\my-site\caprioli.info\fitness\script\blocchi\" & periodos & "\")
set fo = fs.GetFolder("D:\inetpub\webs\caprioliinfo\fitness\script\blocchi\" & periodos & "\")
set fe = fo.files
conto_file = 0
conto_numero_email = 0
for each y in fe
extfile = left(split(y.Name,".pdf")(0),14)
conto_file = conto_file + 1
' conto i file che rispondono ai requisiti richiesti
Set conn = Server.CreateObject("ADODB.Connection")
Set rst = Server.CreateObject("ADODB.Recordset")
conn.open strConnect
criterio = "SELECT * FROM user WHERE codice_cliente = '" & extfile & "' "'AND attivo = 'SI' AND BOLLETTAWEB = 'SI'"
rst.Open criterio, conn, adOpenKeyset
If Not rst.eof then
While rst.EOF = False
ATTIVO = rst.fields("attivo")
BOLLETTAWEB = rst.fields("BOLLETTAWEB")
ID_USER = rst.fields("id")
If ATTIVO = "SI" AND BOLLETTAWEB = "SI" Then
conto_numero_email = conto_numero_email + 1
' response.Write conto_numero_email &"<br>"
' AGGIORNO DATA BASE
Set Rs = server.CreateObject ("ADODB.Connection")
Rs.Open (strConnect)
QuerySQL = "INSERT INTO Predispongo_email (" &_
"sessione, id_user) VALUES (" &_
"'"&Chiave_Univoca&"', '"&ID_USER&"');"
Rs.Execute QuerySQL
Set Rs = Nothing
' FINE
End If
rst.MoveNext
Wend
End If
' fine
Next
' fine
Response.Redirect("mail.asp?step=2&key="&Chiave_Univoca&"")
' ---------------------------------------------------------------------------------
. lo step 2 si occupa di notificarti che cosa vuoi fare, proseguire con l'invio o eliminare tutto per ricominciare di nuovo;
Codice:
' STEP 2
ElseIf step = 2 Then
Set objRs = Server.CreateObject("ADODB.Recordset")
strSQL = "SELECT COUNT(ID) AS cont FROM Predispongo_email WHERE " &_
"sessione = '"&Request.QueryString("key")&"'"
objRs.Open strSQL, strConnect
email_predisposte = objRs("cont")
objRs.Close
Set objRs = Nothing ' chiudo il recordset
%>
<table width="500" cellpadding="2" cellspacing="2" border="0" align="center" style="font-family:Verdana; font-size:10px">
<tr>
<td colspan="2" align="center"><p style="font-size:12px;">Il sistema ha predisposto l'invio di nr. <%=email_predisposte%> email.</p></td>
</tr>
<tr>
<td align="center" bgcolor="#CCCCCC" width="50%"><p><a href="mail.asp?key=<%=Chiave_Univoca%>&step=4">[PROCEDI ALL'INVIO]</a></p></td>
<td align="center" bgcolor="#FF6633" width="50%"><p><a href="mail.asp?key=<%=Chiave_Univoca%>&step=3">[ANNULLA E DISTRUGGI TUTTO]</a></p></td>
</tr>
</table>
<%
' ---------------------------------------------------------------------------------
. lo step 3 si occupa di distruggere le voci inserite nel db in caso di rinuncia oppure al termine dell'invio e-mail;
Codice:
' STEP 3
ElseIf step = 3 Then
Set conn = Server.CreateObject("ADODB.Connection")
Set rst = Server.CreateObject("ADODB.Recordset")
conn.open strConnect
criterio = "SELECT * FROM Predispongo_email WHERE sessione = '"&Chiave_Univoca&"'"
rst.Open criterio, conn, adOpenKeyset
If Not (rst.bof and rst.eof) then
For x = 1 To rst.PageSize
If rst.Eof then exit for
id = (rst.Fields.Item("id").Value)
' elimino il campo relativo al file nel DB
Set DoDelete = Server.CreateObject("ADODB.Command")
DoDelete.ActiveConnection = strConnect
DoDelete.CommandText = "DELETE FROM Predispongo_email WHERE id = "&id
DoDelete.CommandType = 1
DoDelete.CommandTimeout = 0
DoDelete.Prepared = true
DoDelete.Execute()
Set DoDelete = Nothing
' fine
rst.MoveNext
Next
' Else
'La query non ritorna dati
End If
' chiudo e distruggo tutto
rst.Close
conn.Close
Set rst = nothing
Set conn = nothing
Response.Write("Operazione terminata con successo, puoi chiudere il browser!<br />")
' ---------------------------------------------------------------------------------
.lo step 4 infine si occupa dell'invio vero e proprio delle email con il pulsante avanti, terminato il ciclo ti invita a distruggere le info presenti nella tabella predisponi_email.
Codice:
' STEP 4
ElseIf step = 4 Then
Select Case Request.QueryString("dir")
Case ""
v_pagina_corrente = 1
Case "next"
v_pagina_corrente= cdbl(Request.QueryString("pag")) + 1
Case "prev"
v_pagina_corrente= cdbl(Request.QueryString("pag")) - 1
End Select
adOpenKeyset = 1
v_record_pagina = 2 'Numero di record da visualizzare su ogni pagina
Set conn = Server.CreateObject("ADODB.Connection")
Set rst = Server.CreateObject("ADODB.Recordset")
conn.open strConnect
criterio = "SELECT * FROM Predispongo_email WHERE sessione = '"&Chiave_Univoca&"' ;"
rst.Open criterio, conn, adOpenKeyset
'Se la query ritorna dati, visualizzo la pagina
If Not (rst.bof and rst.eof) then
rst.PageSize = cint(v_record_pagina)
rst.AbsolutePage = Cdbl(v_pagina_corrente)
'Ciclo sui record della pagina
For x = 1 To rst.PageSize
'Esco alla fine della pagina, se è l'ultima e contiene meno record delle altre
If rst.Eof then exit for
id = (rst.Fields.Item("id").Value)
%>
<%=id%><br />
---------------------<br />
Qui inserisco il codice invio email<br />
al destinatario estrapolato dal DB<br />
---------------------<br />
<%
rst.MoveNext
Next
'Qui semplicemente creo la barra di navigazione.
If rst.EOF and rst.BOF then
%> <%
Else
If Cdbl(v_pagina_corrente) > 1 Then
%> <%
Else
%> <%
End If
If Cdbl(v_pagina_corrente) < rst.PageCount Then
%><a href='mail.asp?dir=next&pag=<%= v_pagina_corrente %>&key=<%=Chiave_Univoca%>&step=4'><font size='2' face='Verdana'>Avanti</font></a><%
Else
%><a href='mail.asp?key=<%=Chiave_Univoca%>&step=3'><font size='2' face='Verdana'>CHIUDI E DISTRUGGI TUTTO</font></a><%
End If
End If
' fine barra di navigazione
Else
'La query non ritorna dati
%><p>Nessun record da visualizzare.</p><%
End If
' chiudo e distruggo tutto
rst.Close
conn.Close
Set rst = nothing
Set conn = nothing
End If
%>
link prova:
http://www.caprioli.info/fitness/script/blocchi/mail.asp
Ora sta a te ampliare funzionalità a questa idea, puoi fare di tutto, mantenere la cronologia delle email inviate o cancellarle al termine, effettuare il log data/ip invio email e tante altri gadjet.
Buon lavoro.