invio newsletter a 50 indirizzi per volta

aurora.solari

Nuovo Utente
23 Ott 2009
21
0
0
buongiorno a tutti!
ho creato una pagina asp per l'invio di una newsletter agli indirizzi di un database.
la mailing list ha circa 1200 indirizzi e immagino che non riuscirò ad inviare la mail a tutti allo stesso momento.
vorrei quindi inviarla a 50indirizzi per volta con una pausa tra un invio e l'altro..

riporto qui di seguito la mia pagina asp:

<%@ Language=VBScript %>

<%
'Mi collego al db ed estraggo gli indirizzi email
Dim rs, conn, sql
Set rs = Server.CreateObject("ADODB.Recordset")
conn = "driver={Microsoft Access Driver (*.mdb)};dbq="& server.MapPath("/mdb-database/db1.mdb")
sql = "SELECT Email FROM tabella"
rs.Open sql, conn

'Inserisco dentro la variabile bcc tutti i destinatari
x = 0
do until rs.eof
x = x + 1
if x = 1 then
bcc = rs("email")
else
bcc = bcc & "; " & rs("email")
end if
rs.moveNext
loop
rs.close
Set rs = Nothing

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/urlgetlatestversion") = True
Flds.Update

With iMsg

Set .Configuration = iConf

.CreateMHTMLBody "http://www.miosito.it/Newsletter.html"

.To = "[email protected]"

.From = "[email protected]"
.BCC = bcc
.Subject = "Newsletter"
.Send
End With

%>
<title>Newsletter</title>
pagina html inviata

ho trovato uno script che manderebbe 50messaggi per volta ma nn so dove inserirlo nel mio codice.
qualcuno può aiutarmi?
 

aurora.solari

Nuovo Utente
23 Ott 2009
21
0
0
no paolo. lo script che ho riportato è quello che uso per inviare la newsletter a tutti gli indirizzi insieme.

per mandarne 50 alla volta ho trovato questo:

<%@LANGUAGE = VBScript%>
<%
' Recupero tutte le variabili per l'applicazione
Dim messaggio, pag, cn, rs, quante, tot, i, email

' Recupero il corpo della mail
messaggio = "Corpo della mail da recuperare da un form..."

' Recupero e controllo il numero di pagina corrente
pag = Request.QueryString("pag")
If IsNumeric(pag) = False Or pag < 1 Then pag = 1

' Memorizzo il messaggio in una sessione per disporne
If messaggio <> "" Then
Session("messaggio") = messaggio
Else
Response.End
End If

' Mi connetto al database
Set cn = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
cn.Open ' QUI LA STRINGA DI CONNESSIONE

' Lancio la query
rs.Open "SELECT email FROM newsletter", cn, 1

' Predispongo la paginazione
quante = 50
rs.CacheSize = quante
rs.PageSize = quante
rs.AbsolutePage = pag
tot = CInt(rs.PageCount)
i = 0

' Invio le mail una alla volta a blocchi da 50
Do While Not rs.EOF
Set email = Server.CreateObject("CDO.Message")
email.From = "[email protected]"
email.To = rs("email")
email.Subject = "Newsletter del " & Date()
email.TextBody = Session("messaggio")
email.Send
Set email = Nothing
i = i + 1
If i = quante Then Exit Do
rs.MoveNext
Loop

' Un po di pulizia
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing

' Mi sposto al blocco della pagina successiva
If CInt(pag) < CInt(tot) Then
Response.redirect "newsletter.asp?pag=" & CInt(pag) + 1
End If

' Monitorizzo il numero di pagina corrente
Response.write ("Pagina corrente: " & pag)
%>

così com'è nn funziona, probabilmente anche perchè io nn devo mandare un messaggio ma una pagina html come ho descritto nel primo post
 

Paolo69

Moderatore
Membro dello Staff
MOD
18 Feb 2010
555
13
18
Italy
www.caprioli.info
Allora Aurora, intanto ti posto il codice modificato poi ti spiego come personalizzarlo:

Codice:
<%
' Recupero tutte le variabili per l'applicazione
Dim messaggio, pag, cn, rs, quante, tot, i, email

' Recupero il corpo della mail
messaggio = "Corpo della mail da recuperare da un form..."

' Recupero e controllo il numero di pagina corrente
pag = Request.QueryString("pag")
If IsNumeric(pag) = False Or pag < 1 Then pag = 1

' Memorizzo il messaggio in una sessione per disporne
If messaggio <> "" Then
Session("messaggio") = messaggio
Else
Response.End
End If

' Mi connetto al database
strConnect = "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("NewsPad.mdb") 

Set rs = Server.CreateObject("ADODB.Recordset")
	rs.ActiveConnection = strConnect
	rs.Source = "SELECT Email FROM tblNPMembers" 
	rs.CursorType = 1
'	rs.CursorLocation = 2
'	rs.LockType = 1
	rs.Open()

' Predispongo la paginazione
quante = 50
	rs.CacheSize = quante
	rs.PageSize = quante
	rs.AbsolutePage = pag
tot = CInt(rs.PageCount)
	i = 0

' Invio le mail una alla volta a blocchi da 50
Do While Not rs.EOF

' QUI METTO IL CODICE PER INVIARE L'EMAIL

' STAMPO IL VALORE i PER VEDERE SE FUNZIA :)))
response.Write i&"<br>"

i = i + 1
If i = quante Then Exit Do
rs.MoveNext
Loop

' Un po di pulizia
rs.Close
Set rs = Nothing

' Mi sposto al blocco della pagina successiva
If CInt(pag) < CInt(tot) Then
Response.redirect "newsletter.asp?pag=" & CInt(pag) + 1
End If

' Monitorizzo il numero di pagina corrente
Response.write ("Pagina corrente: " & pag)
%>

Modifica il nome del tuo DB: ("NewsPad.mdb")
Modifica il nome della tabella ove vi sono le e-mail: "SELECT Email FROM tblNPMembers"
Se hai fatto tutto correttamente all'esecuzione del file dovresti trovare un progressivo da 1 a 50 e così vià.

Devi aggiungere solo il codice per inviare una mail... intanto vedi se funziona questo blocco.
 
Ultima modifica:

aurora.solari

Nuovo Utente
23 Ott 2009
21
0
0
funziona alla perfezione, grazie ancora!
l'unica cosa che vorrei cambiare è che nella pagina di controllo mi vengono stampati i numeri
0
1
2
3 ecc ecc
pag 1
anzichè i numeri sarebbe possibile far stampare gli indirizzi email a cui è stata inviata la newsletter o è troppo complicato?
 

aurora.solari

Nuovo Utente
23 Ott 2009
21
0
0
ho parlato troppo presto. in realtà nn funziona. sigh!
le email vengono inviate correttamente, ma sempre una alla volta.
ho messo nel campo TO il mio indirizzo email e nel campo CCN 52 indirizzi.
a me il messaggio arriva 52 volte!
visto che di email ne avrei 1000 da mandare non vorrei che mi si intasasse la posta!
 

Paolo69

Moderatore
Membro dello Staff
MOD
18 Feb 2010
555
13
18
Italy
www.caprioli.info
...mmmm, allora, per quanto riguarda i numeri la stringa è questa:
Codice:
' STAMPO IL VALORE i PER VEDERE SE FUNZIA :)))
response.Write i&"<br>"

era una cosa che ho aggiunto per vedere se il ciclo funzionava, se vuoi visualizzare l'indirizzo e-mail basta modificarlo così:

Codice:
' STAMPO IL VALORE i PER VEDERE SE FUNZIA :)))
response.Write email&"<br>"

Per il discorso invio singolo o multiplo non ho ben afferrato il problema, in pratica lo script invia una mail, in successione, ad ogni singolo indirizzo inserito nella tabella "email".
A parer mio questa è la modalità idonea per la privacy e per non sovraccaricare il server SMTP.
Infatti, non trovo giusto che il destinatario sia in grado di visualizzare 50 indirizzi e-mail nella casella "destinatario" mentre, utilizzando questo sistema, visualizza solo il proprio.

In caso di necessità sono in MSN dalle 09,00 alle 12,00 [email protected]
byeee
 

aurora.solari

Nuovo Utente
23 Ott 2009
21
0
0
per il problema privacy, io metto gli indirizzi in copia per conoscenza nascosta quindi il destinatario vede solo il mio indirizzo alla voce TO.
probabilmente può funzionare anche in questo modo, a questo punto metto il destinatario direttamente alla voce TO e non in copia per conoscenza così nn ho neanche il problema di ricevere troppo email nella mia casella!

grazie mille per l'aiuto!
 

aurora.solari

Nuovo Utente
23 Ott 2009
21
0
0
c'è un modo per proteggere la pagina del form per l'invio con username e password di modo che solo chi ha l'autorizzazione possa inviare la newsletter?
 

aurora.solari

Nuovo Utente
23 Ott 2009
21
0
0
mi basta un unico username e password. vorrei che non fosse possibile accedere alla pagina semplicemente digitando l'url sulla barra del browser! spero di essermi spiegata :b
 

aurora.solari

Nuovo Utente
23 Ott 2009
21
0
0
questa è la mia pagina newsletter.htm


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<script language="JavaScript" type="text/JavaScript">
<!--
function MM_validateForm() { //v4.0
var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args);
if (val) { nm=val.name; if ((val=val.value)!="") {
if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
if (p<1 || p==(val.length-1)) errors+='- '+nm+' deve essere valida.\n';
} else if (test!='R') { num = parseFloat(val);
if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
min=test.substring(8,p); max=test.substring(p+1);
if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
} } } else if (test.charAt(0) == 'R') errors += '- '+nm+' necessaria.\n'; }
} if (errors) alert('Inserire email valida:\n'+errors);
document.MM_returnValue = (errors == '');
}
//-->
</script>

<head>
<title></title>
<style type="text/css">
.style1
{
font-family: Arial;
}
</style>
</head>
<body>

<form action="mailing.asp" method="POST" name="form1" onSubmit="MM_validateForm('from','','RisEmail');return document.MM_returnValue">

<table style="width:50%;" class="style1">
<tr>
<td>

Da</td>
<td>
<input type="text" name="from" size="20" /></td>
</tr>
<tr>
<td>
Oggetto</td>
<td>
<input type="text" name="subject" size="20" /></td>
</tr>
<tr>
<td>
<span lang="it">Pagina da inviare</span></td>
<td>
<input type="text" name="newsletter" size="50" /></td>
</tr>
<tr>
<td>
&nbsp;</td>
<td>
<input type="submit" name="Submit" value="Invia" /></td>
</tr>

</table> </form>
</body>
</html>
 

Paolo69

Moderatore
Membro dello Staff
MOD
18 Feb 2010
555
13
18
Italy
www.caprioli.info
Iniziamo..
crea una pagina chiamata login.asp
inserisci al suo interno il seguente codice:
Codice:
<%
' PRELEVA L'USERNAME E LA PASSWORD INSERITI
Username = Replace(Request.Form("username"), "'", "''")
Password = Replace(Request.Form("password"), "'", "''")
Action   = Request.Form("B1")

' CONTROLLA INNANZITUTTO SE E' STATO PASSATO UN VALORE
IF Username <> "" and Password <> "" then

	' QUI TROVI IL NOME UTENTE E PASSWORD DA TE IMPOSTATI
	UsernameImpostata = "nome"
	PasswordImpostata = "password"
	
		If Username = UsernameImpostata AND Password = PasswordImpostata Then
			' ok, i dati coincidono continuo
				Session("Loggato") = True
				Session("Username") = Username
		Else
			' altrimenti 
				Session("Loggato") = False
		End IF
	
IF Session("Loggato") = True then
' nome pagina protetta
	Response.Redirect "newsletter.asp"
Else
%>
<hr>
<p align="center"><b><font face="Verdana" size="2">Username/Password non corretti!</font></b></p>
<hr>
<%
End IF

End IF
%>
<p>&nbsp;</p>
<p align="center"><b><font face="Verdana" size="3">Sezioni Riservate - Login</font></b></p>
<form method="POST" action="login.asp">
  <div align="center">
    <center>
    <table border="0" width="61%" cellspacing="0" cellpadding="0">
      <tr>
        <td width="50%"><font face="Verdana" size="2">Username:</font></td>
        <td width="50%"><input type="text" name="username" size="20"></td>
      </tr>
      <tr>
        <td width="50%"><font face="Verdana" size="2">Password:</font></td>
        <td width="50%"><input type="password" name="password" size="20"></td>
      </tr>
      <tr>
        <td width="100%" colspan="2">
          <p align="center"><input type="submit" value="Login" name="B1"><input type="reset" value="Reimposta" name="B2"></p></td>
      </tr>
    </table>
    </center>
  </div>
</form>
<p align="left">&nbsp;</p>

Personalizzazione:
Inserisci qua il nome/password da te scelti
' QUI TROVI IL NOME UTENTE E PASSWORD DA TE IMPOSTATI
UsernameImpostata = "nome"
PasswordImpostata = "password"
Se il login ha successo il sistema ti invia nella pagina da te protetta:
IF Session("Loggato") = True then
' nome pagina protetta
Response.Redirect "newsletter.asp"
Else
...ovviamente newsletter.asp dovrai cambiarlo con il nome file da proteggere.

-------------------------------------------
2° fase

devi inserire in testa alla pagina da proteggere il seguente codice:

Codice:
<%
' VERIFICHIAMO SE L'UTENTE E' IDENTIFICATO (LOGGATO)
    IF Session("Loggato") = False and Session("Username") = "" then
' UTENTE NON LOGGATO
' PORTA L'UTENTE NELLA PAGINA LOGIN.ASP
    Response.Redirect "login.asp"
End IF
%>

se vuoi a metà pagina inserisci questo:
Codice:
<p align="left"><b><font face="Verdana" size="3">Benvenuta e buon lavoro
<i> <%=Session("Username")%> </i></font></b></p>

:mavieni:
 
Discussioni simili
Autore Titolo Forum Risposte Data
C Mailchimp ritardo invio newsletter subscribers Email Marketing 1
Z Limite invio newsletter con PHP - mail() PHP 4
L problema invio newsletter con script proprio in php PHP 10
M script per invio newsletter Classic ASP 4
N [Vendo] Invio 60.000 Newsletter DEM Vendere e Acquistare pubblicita' online 0
helpdesk Invio Newsletter PHP 4
U Nuovo servizio Invio Newsletter Presenta il tuo Sito 0
D risultati invio di newsletter PHP 6
L script per invio newsletter PHP 1
D Invio Newsletter... Classic ASP 4
I Valutazione economica di invio newsletter? Discussioni Varie 2
R Invio dai tessera sanitaria PHP 1
M telecamera Foscam - mancato invio mail ad account gmail IP Cam e Videosorveglianza 0
G Invio di più valori con la stessa checkbox PHP 4
M Invio dati database via email php PHP 0
K [php]form invio dati PHP 0
G form invio multiplo con checkbox PHP 12
nivaria.achinet Intercettare form solo dopo invio Javascript 1
M Memorizzare i dati nei campi prima dell'invio al db PHP 4
M Unire 2 funzioni per l'invio di un form e con l'apertura di un div Javascript 0
Z PHP.INI - STMP per invio email con PHP Server Dedicati e VPS 0
M Form: come tornare ai campi già compilati dopo invio PHP 1
G Invio form con PHP PHP 3
M Invio di email PHP 0
A invio massivo dati a file php Javascript 4
P Funzione jQuery Ajax invio file a php jQuery 1
Cosina Upload multiplo con invio allegati per email PHP 0
G creazione menu a tendina e invio a pagina php PHP 1
R Invio mail con allegati multipli PHP 0
R Invio mail con allegati da directory PHP 1
Cosina Invio messaggio a mailing list su file txt PHP 9
W Invio Dati ad un altra pagina Classic ASP 1
S Invio email da form PHP 8
psicomia Server e url per invio di file Server Dedicati e VPS 3
max1974 Invio email PHP 12
Daniele_Carrara Problema timeout - invio mail PHP 7
U PHP bottone per invio mail o ritorno al form PHP 15
G Invio mail con php da dati prelevati da un database PHP 9
L [PHP] Invio Immagini PHP 1
AC1 [PHP] Invio Mail PHP 18
I [PHP] Invio sms multipli PHP 4
S Consigli per invio di comunicati stampa Discussioni Varie 2
A [PHP] Invio automatico dati da form PHP 6
F Estrazione Email di persone selezionate e attive / facebook + invio di massa! Annunci servizi di Social Media Marketing 0
ANDREA20 [PHP] Modulo email invio PHP 5
Shyson [PHP] Codice iscrizione e invio avviso nuovi articoli PHP 3
Tommy03 Errore invio email con PHP PHP 1
B [PHP] Invio mail automatico dopo compilazione form - db PHP 25
Cosina [PHP] Preservare i campi del form solo se l'invio non ha successo PHP 5
A [PHP] errore 404 e invio mai path pagina con link interrotto PHP 2

Discussioni simili