[Risolto] Invio mail a blocchi

djjunior

Utente Attivo
24 Lug 2004
99
1
8
Purtroppo sono su server condiviso su aruba, ho provato a modificare il timeout ma sicuramente c'è qualche limitazione.
Aspetto una tua genialata, grazie 1000
G.
 

djjunior

Utente Attivo
24 Lug 2004
99
1
8
Sto provando a paginare quello che mi hai detto in questo modo:
Codice:
<%
perpag=3
periodos = "allegati"


offset=request.QueryString("offset")
if offset="" then
offset=1
end if

tot=0
cicli=0
maxtemp=(perpag*offset)-perpag
perpagtemp=perpag*offset


set fs = Server.CreateObject("Scripting.FileSystemObject")
set fo = fs.GetFolder("d:\inetpub\webs\miositoit\public\test\" & periodos & "\")
set fe = fo.files

'conteggio totali

for each y in fe
tot=tot+1
Next


for each y in fe

if cicli >= maxtemp and cicli < perpagtemp then
extfile = left(split(y.Name,".pdf")(0),14)
nomefile = y.Name

Dim strPath

	strPath = "D:\inetpub\webs\miositoit\mdb-database\prova.mdb"
	strConnect = "DRIVER={Microsoft Access Driver (*.mdb)};" & "DBQ=" & strPath


	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'"
		rst.Open criterio, conn, adOpenKeyset


%>
<table width="400" cellpadding="2" cellspacing="2" border="1">
<tr>
<td colspan="2">SIMULAZIONE EMAIL:</td>
</tr>
<tr>
<td>Nome:</td>
<td><%=rst.fields("nome")%></td>
</tr>
<tr>
<td>Cognome:</td>
<td><%=rst.fields("cognome")%></td>
</tr>
<tr>
<td>Cod. Cliente:</td>
<td><%=rst.fields("codice_cliente")%></td>
</tr>
<tr>
<td>E-mail:</td>
<td><%=rst.fields("email")%></td>
</tr>
<tr>
<td>Allegato:</td>
<td><%=nomefile%></td>
</tr>
</table>


<%

end if

cicli=cicli+1

Next

avanti=offset+1
indietro=offset-1

if indietro < 1 then
indietro=1
end if

%>
<body>
<%if offset>1 then%><a href="?offset=<%=indietro%>">Indietro</a><%end if%><%if (offset*perpag) < tot then%> <a href="?offset=<%=avanti%>">Avanti</a><%end if%>
</body>
Puoi vederlo in azione qui:
http://www.studiofotografare.it/public/test/list2.asp
Ma dopo il 13° risultato ho l'errore:
ADODB.Field error '80020009'

Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.

/public/test/list2.asp, line 0
Come mai, altrimenti era perfetto....
Grazie
 

Paolo69

Moderatore
Membro dello Staff
MOD
18 Feb 2010
555
13
18
Italy
www.caprioli.info
prova aggiungendo questa condizione:
Codice:
'Visualizzo se presenti record
	If NOT Rst.EOF Then

' stampo i risultati
%>
<table width="400" cellpadding="2" cellspacing="2" border="1">
<tr>
...
</tr>
</table>
<%

End If

%>
 

djjunior

Utente Attivo
24 Lug 2004
99
1
8
Si funzionerebbe alla grande.... se deve prendere tutti i risultati senza condizioni, ma se metto un' ulteriore condizione nella query tipo qui ho aggiunto FATTURA = 'SI':
Codice:
criterio = "SELECT * FROM user WHERE codice_cliente = '" & extfile & "' AND attivo = 'SI' [B]AND fattura = 'SI'[/B]"
Salta i risultati cui ho impostato FATTURA su NO,come puoi vedere dal link, invece non dovrebbe proprio considerarli, potresti controllare lo script , c'è qualcosa nel ciclo che crea questo problema?
I records impostati su SI sono 13 mentre quelli impostati su NO sono 7
Grazie ancora...
 
Ultima modifica:

Paolo69

Moderatore
Membro dello Staff
MOD
18 Feb 2010
555
13
18
Italy
www.caprioli.info
Non complicarti la vita, lascia la query senza condizioni.
Estrai i valori attivo e fattura e valorizza due variabili.
Metti una condizione sulla spedizione, del tipo:

If attivo = "SI" AND fattura = "SI" Then

codice spedisci

Else

codice visualizza tipo simulazione

End If

...questo ti permette di visualizzare senza problemi il ciclo completo e di vedere ad occhio quello che fa il sistema.
 

djjunior

Utente Attivo
24 Lug 2004
99
1
8
Ciao PAOLO,
purtroppo prima non ho potuto scriverti.... comunque se vedi questo mio post ti segnalo che non va bene neanche impostando le condizioni if che mi hai indicato al tuo ultimo post, perchè nn fa la paginazione corretta, perchè la paginazione la fa su questa parte di codice:

Codice:
set fs = Server.CreateObject("Scripting.FileSystemObject")
set fo = fs.GetFolder("d:\inetpub\webs\miositoit\public\test\" & periodos & "\")
set fe = fo.files

for each y in fe
tot=tot+1
Next

for each y in fe

if cicli >= maxtemp and cicli < perpagtemp then
extfile = left(split(y.Name,".pdf")(0),14)
nomefile = y.Name

E cioè su tutti i file presenti nella cartella "allegati", mentre si dovrebbe modificare lo script in modo che faccia la paginazione sui dati effettivamente estratti dal db con le condizioni che mi necessitano (attivo=si - fattura=si ect)
Scusami per l'insistenza, fatti venire una genialata su come mandare quste benedette mail in blocchi.
Aiutami tu..... Ti ringrazio di tutto.
Non so proprio cosa fare speriamo anche in qualcuno che legga questo post che puòl aiutarmi.
Grazie
 

Paolo69

Moderatore
Membro dello Staff
MOD
18 Feb 2010
555
13
18
Italy
www.caprioli.info
Scusami, ero in ferie, lunedì torno operativo.
Mi mandi l'ultimo file da te compilato?
Gli do un'occhio e vedrai che dopo le email volanooooooooooooooo
 

djjunior

Utente Attivo
24 Lug 2004
99
1
8
Grazie... grazie
ecco "l'ultimo" che dalla seconda pagina però non mi stampa a video i records:
Codice:
<%
perpag=3

periodos = "allegati"

offset=request.QueryString("offset")
if offset="" then
offset=1
end if

tot=0
cicli=0
maxtemp=(perpag*offset)-perpag
perpagtemp=perpag*offset


    
    set fs = Server.CreateObject("Scripting.FileSystemObject")
    set fo = fs.GetFolder("d:\inetpub\webs\miositoit\public\test\" & periodos & "\")
    set fe = fo.files
      
    for each y in fe
    extfile = left(split(y.Name,".pdf")(0),14)
    nomefile = y.Name
    
    if cicli >= maxtemp and cicli < perpagtemp then
    
    Dim strPath
    strPath = "D:\inetpub\webs\miositoit\mdb-database\prova.mdb"
    strConnect = "DRIVER={Microsoft Access Driver (*.mdb)};" & "DBQ=" & strPath

    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 allegato = 'SI'"
    rst.Open criterio, conn, adOpenKeyset

    if Not rst.eof then

    While rst.EOF = False And cicli < perpag

%>
<table width="400" cellpadding="2" cellspacing="2" border="1">
<tr>
<td colspan="2">RECORD: <%=progressivo+1%> (<%=rst.fields("bollettaweb")%> - <%=rst.fields("attivo")%>)</td>
</tr>
<tr>
<td>Nome:</td>
<td><%=rst.fields("nome")%></td>
</tr>
<tr>
<td>Cognome:</td>
<td><%=rst.fields("cognome")%></td>
</tr>
<tr>
<td>Cod. Cliente:</td>
<td><%=rst.fields("codice_cliente")%></td>
</tr>
<tr>
<td>E-mail:</td>
<td><%=rst.fields("email")%></td>
</tr>
<tr>
<td>Allegato:</td>
<td><%=nomefile%></td>
</tr>
</table>
<% 

Progressivo = Progressivo +1
rst.MoveNext
  cicli=cicli+1
             Wend                
    else
end if
        end if 
    tot=tot+1 
    
     avanti=offset+1    
     
     
  Next  
    

%>
<body>
<%if (offset*perpag) < tot then%> <a href="?offset=<%=avanti%>">Avanti</a><%else%>Invio Terminato<%end if%>
</body>
Per visualizzarlo in funzione:
http://www.studiofotografare.it/public/test/list.asp
Aspetto tue... sto letteralmente uscendo fuori di testa.
Grazieeee
 

djjunior

Utente Attivo
24 Lug 2004
99
1
8
il campo ALLEGATO sarebbe campo BOLLETTAWEB (avevo sbagliato a scriverlo) ed è SI/NO
I campi db delle condizioni sarebbero ATTIVO (SI/NO) e BOLLETTAWEB (SI/NO)
Grazie
 

Paolo69

Moderatore
Membro dello Staff
MOD
18 Feb 2010
555
13
18
Italy
www.caprioli.info
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 
			%>&nbsp;<%
			Else
			If Cdbl(v_pagina_corrente) > 1 Then 
			%>&nbsp;<% 
			Else
			%>&nbsp;<% 
			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.
 
Discussioni simili
Autore Titolo Forum Risposte Data
A [PHP] RISOLTO Invio Mail con Tabella PHP 2
S [risolto] Invio scheda dettagliata in mail Classic ASP 6
I [Risolto] Problemi invio e-mail con CDOSYS con domini @live.it Classic ASP 4
S Problema in PHP per invio file XML - RISOLTO- PHP 8
S [RISOLTO]invio form con select onchange Javascript 2
L (risolto) MySQL 0
B getElementById su piu id(Risolto) Javascript 7
L Esercitarsi con Js [RISOLTO] Javascript 4
C [RISOLTO]Inserimento variabile php in input html PHP 20
L risolto visualizzazione e ordinamento dati PHP 1
moustache [RISOLTO] SQL PHP IIS PHP 8
Sergio Unia Ricezione email con destinatari multipli [Risolto] PHP 2
L update tabelle in php mysql [risolto] PHP 6
M Semplice visualizzatore di immagini [risolto con plugin wp] PHP 7
L [RISOLTO] Stampa a video risultato count in html PHP 13
L [RISOLTO] Eliminare una discussione creata PHP 3
tomorc [HTML] Problema con scroll bar (risolto) HTML e CSS 0
A [PHP] Problema query insert [RISOLTO] PHP 14
B [PHP] recuperare IP dei server in load balancing [RISOLTO] PHP 3
K [RISOLTO] Problema Griglia Php+Mysql PHP 13
S [RISOLTO] aggiorna tabella da select option asp classic Classic ASP 7
elpirata [RISOLTO][Javascript] Datapicker e autocompletamento campo input Javascript 2
elpirata [RISOLTO][Mysql] Problema insert valori apostrofati MySQL 1
elpirata [RISOLTO][Mysql] Contare le occorrenze in un campo tipo varchar MySQL 2
G [MS Access] Gestione biglietti [RISOLTO] MS Access 2
G [MS Access] Casella combinata & Query [RISOLTO] MS Access 4
G [MS Access] Query mese corrente con conteggio [RISOLTO] MS Access 2
M [RISOLTO]Windows media player non mi funziona più su win 10 pro 64 bit Windows e Software 2
C [RISOLTO][PHP] Errore di sintassi PHP 8
IT9-Gpp [RISOLTO] Leggere variabile restituita da success Ajax 3
Kolop [RISOLTO][PHP] Problema Pagination PHP 2
C [RISOLTO][PHP] Funzione ONclick PHP 14
C [RISOLTO][PHP] Conteggio righe di una tabella PHP 4
N [PHP] Utilizzo variabili di sessione [Risolto] PHP 13
Tommy03 [RISOLTO][PHP] Webserver o devserver? PHP 2
Sergio Unia Recupero dati da una vecchia versione MySql [Risolto] MySQL 4
spider81man [PHP] Problemi cancellazione dato su DB [RISOLTO] PHP 1
A [RISOLTO]Inserimento Immagini da pc a MySql PHP 15
felino Risolto - [Wordpress][WooCommerce] PayPal Checkout e campi di fatturazione WordPress 2
elpirata [PHP][RISOLTO] Sommare gli importi estratti da un ciclo while PHP 3
elpirata [PHP][RISOLTO] Effettuare la somma dei tempi di lavorazione PHP 3
elpirata [PHP] [RISOLTO]Sovrascrivere testo in una tabella PHP 2
A [RISOLTO]Recuperare dati inviati con json tramite php PHP 4
C [RISOLTO][PHP] Passaggio variabili senza refresh di pagina PHP 7
elpirata [PHP][RISOLTO] Errore di tipo Notice: Undefined index - Come risolvere quando si hanno tante var PHP 10
A [Javascript] [RISOLTO] Doppio "submit", in uno stesso "Form" , che puntino ad "action" diversi Javascript 1
marino51 [Risolto]videochat di messenger ha smesso di funzionare sul telefonino Smartphone e tablet 1
A [Javascript] [HTML] RISOLTO...Allungare un box all'apertura della pagina No Mouse over Javascript 9
ken_korn [Javascript][Risolto] browser.tab.Tabs.favIconUrl non funziona Javascript 5
A [RISOLTO] HighChart e PHP PHP 4

Discussioni simili