- Home
- Categorie
- Coding e Sistemistica
- Altri linguaggi per il web
- Invio automatico e-mail
-
Allora butto li qualche riga di codice.
Per il controllo della data potresti fare una cosa del genere.
query = "SELECT nome,mail FROM utenti WHERE compleanno="&FormatDateTime(Now(),2) set rstmp=connessione.execute(query) vettore=rstmp.getrows
Il risultato di questa query dovrebbe fornirti un vettore con tutti gli utenti nati "oggi".
Scorrendo tale vettore gli associ le azioni da effettuare.
for indice=0 to ubound(vettore,2) tmpnome=vettore(0,indice) tmpmail=vettore(1,indice) Set objMail = Server.CreateObject("CDONTS.NewMail") objMail.From="[email protected]" objMail.To= tmpmail objMail.Subject="Auguri" objMail.Body="Ciao " & tmpnome & " auguri da parte nostra" objMail.Send Set objMail = nothing next
Spero di esserti stato d'aiuto.
-
Allora ho fatto la prova con la schedulazione e funziona correttamente.
nel frattempo però ho trovato questo codice in php che sembra essere fatto proprio per la mia esigenza, te lo posto e ti chiedo se possiamo fare la stessa cosa però in ASP:<?php //lets connect to the database first $Host = "localhost"; $User = "YourUser"; $Password = "YourPassword"; $DBName = "YourTableName"; $TableName = "nuke_users"; $date = date ("m-d"); //get the list of people having there birthday today $Conn = mysql_connect ($Host, $User, $Password); $QueryBirthday = "SELECT * FROM $TableName WHERE birthday = '$date'"; $ResultBirthday = mysql_db_query ($DBName, $QueryBirthday, $Conn); // check if there is actually anybody If ($ResultBirthday && mysql_num_rows($ResultBirthday)) { // go through every record in the SQL result While ($Row = mysql_fetch_assoc($ResultBirthday)) { // send an email to the person in the currently active record $Voornaam = $Row[Voornaam]; $user_email = $Row[user_email]; $from = "Webserver@YourDomain"; $to = "$user_email"; $extra = "From: " . $from . "\r\n"; $extra .= "Reply-To: " . $from . "\n"; $extra .= "Return-Path: <" . $from . ">"; $extra .= "Cc: <" . $cc . ">" . "\r\n"; $extra .= "MIME-Version: 1.0\r\n"; $extra .= "Content-type: text/html; charset=iso-8859-1\r\n"; $subject = "!!! Your Subject Title !!!"; $body = "<table><tr>"; $body .= "<td>Dear $Voornaam, <br><br>Your Text<br><br></td>"; $body .= "</tr><tr>"; $body .= "<td><img src=\"Your location of the image (birthdaycard)\" border=\"0\" alt=\"\"><br><br></td>"; $body .= "</tr><table>"; $body .= "<br><br><br><br><br><br>Your Signature</a>"; mail($to, $subject, $body, $extra); } }; mysql_close($Conn); ?>
Con la schedulazione e questa pagina sembra che sia tutto risolto, giusto?
Grazie ancora.
-
Allora ti posto un po di codice provalo e dimmi se va, dovrebbe essere cosi scusa se ce qualche errore.
'variabili generali tabella = "nuke_users" mydata = FormatDateTime(Now(),2) percorso="database.mdb" mioindirizzomail="[email protected]" ' Connessione Set objConn = Server.CreateObject("ADODB.Connection") strConn = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath(percorso) objConn.Open strConn query = "SELECT nome,mail FROM "&tabella&" WHERE compleanno="&mydata set rstmp=connessione.execute(query) 'assegno il risultato a un vettore vettore=rstmp.getrows 'controllo se esistono risultati effettivi if(isarray(vettore)) 'scorro il vettore for indice=0 to ubound(vettore,2) 'assegno a delle variabili temporanee i valori che mi interessono come mail e nome utente tmpnome=vettore(0,indice) tmpmail=vettore(1,indice) tmptestomail="Ciao " & tmpnome & " auguri da parte nostra" Set objMail = Server.CreateObject("CDONTS.NewMail") objMail.From=mioindirizzomail objMail.To= tmpmail objMail.Subject="Auguri" objMail.Body=tmptestomail objMail.Send Set objMail = nothing next end if objConn.Close Set objConn = Nothing
-
Grazie mille amico, siamo vicini ma ancora qualche problemino...l'errore che mi esce è il seguente:
Microsoft VBScript compilation error '800a03f9'
Expected 'Then'
/ita/aa.asp, line 25
if(isarray(vettore))
--------------------^come risolvo?
-
Cavoli scusa che stupido che sono certo ci va il then.
if(isarray(vettore)) then
.....
end ifIl blocco dice.
Se abbiamo un risulato effettivo, cioè almeno una persona nata oggi, allora ....
.....
fine blocco.
-
c'è ancora qualche problemino, ti posto il codice per intero:
<% 'variabili generali tabella = "Utenti" mydata = FormatDateTime(Now(),2) percorso="/mdb-database/prova_mailing2.mdb" mioindirizzomail="indirizzoemaildelsito" ' Connessione Set objConn = Server.CreateObject("ADODB.Connection") strConn = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath(percorso) objConn.Open strConn query = "SELECT Nome,Mail FROM "&tabella&" WHERE Data="&mydata set rstmp=connessione.execute(query) 'assegno il risultato a un vettore vettore=rstmp.getrows 'controllo se esistono risultati effettivi if(isarray(vettore)) then 'scorro il vettore for indice=0 to ubound(vettore,2) 'assegno a delle variabili temporanee i valori che mi interessono come mail e nome utente tmpnome=vettore(0,indice) tmpmail=vettore(1,indice) tmptestomail="Ciao " & tmpnome & " auguri da parte nostra" Set objMail = Server.CreateObject("CDONTS.NewMail") objMail.From=mioindirizzomail objMail.To= tmpmail objMail.Subject="Auguri" objMail.Body=tmptestomail objMail.Send Set objMail = nothing next end if objConn.Close Set objConn = Nothing %>
l'errore che esce è il seguente:
Microsoft VBScript runtime error '800a01a8'
Object required: 'connessione' /ita/include/aa.asp, line 13alla linea n. 13 c'è questo: set rstmp=connessione.execute(query)
P.S: ti informo che l'invio della mail di prova l'ho fatto e funziona bene con la schedulazione di aruba. Basta caricare infatti questa pagina in linea e mi arriva l'email
così come è settata (quidni con CDO.Message):<!--#include virtual="/mdb-database/inc_variabili.asp"--> <%Dim MiaMail,body,buckup Set MiaMail = Server.CreateObject("CDO.Message") MiaMail.From = UrlEcom buckup = MailAdmin MiaMail.To = buckup MiaMail.Subject = "Prova !" MiaMail.HTMLBody = "Prova invio e-mail in automatico" MiaMail.Fields.Update() MiaMail.Send() Set MiaMail = Nothing %>
ti prego dimmi che ci riusciremo...:x
-
Niente da fare, avrei gran voglia di leggere dei manuali ma il tempo è troppo poco, praticamente uguale a zero!
Questo è l'ultima prova che ho fatto:<%
'variabili generali
tabella = "Utenti"
mydata = FormatDateTime(Now(),2)
percorso="/mdb-database/prova_mailing2.mdb"
mioindirizzomail="indirizzodelsito"
' Connessione
Set objConn = Server.CreateObject("ADODB.Connection")
strConn = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath(percorso)
objConn.Open strConn
query = "SELECT Nome,Mail FROM "&tabella&" WHERE Data="&mydata
set rstmp = Conn.execute(query)
'assegno il risultato a un vettore
vettore=rstmp.getrows
'controllo se esistono risultati effettivi
if(isarray(vettore)) then
'scorro il vettore
for indice=0 to ubound(vettore,2)
'assegno a delle variabili temporanee i valori che mi interessono come mail e nome utente
tmpnome=vettore(0,indice)
tmpmail=vettore(1,indice)
tmptestomail="Ciao " & tmpnome & " auguri da parte nostra"Set objMail = Server.CreateObject("CDONTS.NewMail")
objMail.From=mioindirizzomail
objMail.To= tmpmail
objMail.Subject="Auguri"
objMail.Body=tmptestomail
objMail.Send
Set objMail = nothing
next
end if
objConn.Close
Set objConn = Nothing
%>Cosa c'è di sbagliato? Qualcuno potrebbe aiutarmi a risolvere?
Grazie in anticipo
-
Ora che errori ti da?
P.S occhio alle maiuscole nei post.
-
Il solito errore alla linea 13 cioè:
Microsoft VBScript runtime error '800a01a8'
Object required: 'Conn' /ita/include/aa.asp, line 13Non capisco perche!
-
Credo l'errore sia questo.
Errore causato dal fatto che non si puo provare il codice.Cambia questa riga di codice
set rstmp=connessione.execute(query)
in
set rstmp= objConn.execute(query)
e dimmi se va.
-
Niente da fare...ecco il codice con la tua ultima modifica:
<% 'variabili generali tabella = "Utenti" mydata = FormatDateTime(Now(),2) percorso="/mdb-database/prova_mailing2.mdb" mioindirizzomail="mailmiosito" ' Connessione Set objConn = Server.CreateObject("ADODB.Connection") strConn = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath(percorso) objConn.Open strConn query = "SELECT Nome,Mail FROM "&tabella&" WHERE Data="&mydata set rstmp= objConn.execute(query) 'assegno il risultato a un vettore vettore=rstmp.getrows 'controllo se esistono risultati effettivi if(isarray(vettore)) then 'scorro il vettore for indice=0 to ubound(vettore,2) 'assegno a delle variabili temporanee i valori che mi interessono come mail e nome utente tmpnome=vettore(0,indice) tmpmail=vettore(1,indice) tmptestomail="Ciao " & tmpnome & " auguri da parte nostra" Set objMail = Server.CreateObject("CDONTS.NewMail") objMail.From=mioindirizzomail objMail.To= tmpmail objMail.Subject="Auguri" objMail.Body=tmptestomail objMail.Send Set objMail = nothing next end if objConn.Close Set objConn = Nothing %>
e questo è l'errore:
Microsoft JET Database Engineerror '80004005'
Unrecognized database format 'D:\Inetpub\webs\miosito\mdb-database\prova_mailing2.mdb'.
/ita/include/aa.asp, line 11la linea 11 è questa : objConn.Open strConn
grazie ancora per l'attenzione...;-)
-
Ma ora sembriamo esserci sembra essere un problema di database non più di codice.
-
Vuoi che ti invii il database?
Il percorso è il seguente:sito/mdb-database/database.mdb
la pagina la lancio in un'altra cartella della stessa altezza della cartella mdb-database...
Dimmi tu cosa posso fare. Grazie e scusa per il disturbo
-
Su che hosting sei, direi forse Aruba visto la stringa... quindi non dovrebbero esserci problemi.
Quell'errore dovrebbe essere generato quando.
- Il file potrebbe essere corrotto.
- Il file è salvato magari in un formato non giusto, prova con mdb 2003.
- Il percorso potrebbe essere sbagliato.
Prova con queste verifiche prima.
-
Su che hosting sei, direi forse Aruba visto la stringa... quindi non dovrebbero esserci problemi.
Quell'errore dovrebbe essere generato quando.
- Il file potrebbe essere corrotto.
- Il file è salvato magari in un formato non giusto, prova con mdb 2003.
- Il percorso potrebbe essere sbagliato.
Prova con queste verifiche prima.
-
Ho messo un nuovo database sicuramente funzionanate con 10 registrazioni, 10 indirizzi e.mail diversi ma tutti funzionanati e 10 date in questo formato ggmmaaaa (ossia 29102009)...
e questo è l'errore:
ADODB.Recordset error '800a0bcd'
Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record. /ita/include/aa.asp, line 16lalinea 16 è la seguente: vettore=rstmp.getrows
-
Ma non capisco chi richiami questo file aa.asp, il codice che ti ho fornito io no. Quindi dove?
-
Il codice che mi hai fornito è nella pagina denominata aa.asp, una semplice prova...
Hai qualche soluzione?
-
Proviamo cosi allora in quella riga scrivi cosi.
if not rstmp.eof then vettore=rstmp.getrows end if
Vediamo se cosi va.
-
Perfetto, questo il nuovo codice però ora mi esce solo una pagina biance senza nessun errore ma non ricevo nemmeno nessuna mail...
Il formato della data è corretto?<%
'variabili generali
tabella = "Utenti"
mydata = FormatDateTime(Now(),2)
percorso="/mdb-database/prova.mdb"
mioindirizzomail="mio indirizzo email del sito"
' Connessione
Set objConn = Server.CreateObject("ADODB.Connection")
strConn = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath(percorso)
objConn.Open strConn
query = "SELECT Nome,Mail FROM "&tabella&" WHERE Data="&mydata
set rstmp= objConn.execute(query)
'assegno il risultato a un vettore
if not rstmp.eof then
vettore=rstmp.getrows
end if
'controllo se esistono risultati effettivi
if(isarray(vettore)) then
'scorro il vettore
for indice=0 to ubound(vettore,2)
'assegno a delle variabili temporanee i valori che mi interessono come mail e nome utente
tmpnome=vettore(0,indice)
tmpmail=vettore(1,indice)
tmptestomail="Ciao " & tmpnome & " auguri da parte nostra"Set objMail = Server.CreateObject("CDONTS.NewMail")
objMail.From=mioindirizzomail
objMail.To= tmpmail
objMail.Subject="Auguri"
objMail.Body=tmptestomail
objMail.Send
Set objMail = nothing
next
end if
objConn.Close
Set objConn = Nothing
%>