- Home
- Categorie
- Coding e Sistemistica
- Altri linguaggi per il web
- Invio automatico e-mail
-
Invio automatico e-mail
Ciao ragazzi sono nuovo di questo forum e non vedo l'ora di sbirciare un po di risorse utili. Quella che serve a me in particolar modo sembra però non esserci e mi spiego:
avrei bisogno di inviare una mail in automatico nel giorno in cui la data corrisponde a quella presente nel database clienti, fatto in access, come ad esempio l'invio degli auguri per il compleanno.
esempio: Se oggi è il 23/10 il sistema deve inviare una e-mail all'indirizzo di posta elettronica del cliente in corrispondenza al quale c'è questa data!Sembra essere una cosa molto utile e mi stupisco come nessuno ne abbia mai parlato e giunto ad una soluzione.
Grazie mille a quanti mi aiuterano!
Antonio
-
Io provo a suggerirti una strada, che molto probabilmente non è la più elegante.
Crei una pagina check_compleanno asp o php dipende dal tipo di linguaggio che usi.
All'interno di questa pagina, non accessibile dal sito normalmente, crei una funzione di controllo del database che controlla le date e le gestisce con le tue funzioni, come ad esempio controllo data e invio mail di auguri.
A questo punto devi trovare il modo di lanciare la pagina periodicamente, e conosco 3 strade.
- Ogni giorno, tu clicchi sull'url di controllo (Sconsigliato eh eh).
- Attraverso uno scheduler che hai sul tuo pc, gli fai lanciare periodicamente a un certo orario quella pagina.
- Esistono alcuni siti che offrono questo servizio a costi relativamente bassi.
-
Ti ringrazio per l'attenzione, sei gentilissimo.
Tra tutte queste l'unica cosa che saprei dirti è che aruba offre un servizio per la schedulazione automatica per quello quindi non ci sarà nessun problema...
Le cose che mi preoccupano sono le prime due dal momento che non sono programmatore asp ma ho sempre fatto salti mortali per adattare delle cose già fatte alle mie esigenze ed in quello devo dire sono davvero bravo.
A questo punto hai da consigliarmi qualche altra cosa? te saresti capace?
oppure dammi qualche indicazione in piu che ti dimostrerò tutta la mia buona volonta!
-
Asp affiancato ad Access? Mysql?
La cosa più difficile era appunto la schedulazione.Per quanto riguarda le funzioni, quasi sicuramente bisogna crearle perchè saranno componenti personalizzate, per lo più puoi trovare pezzi di codice da utilizzare come, connessioni a database, letture, inserimento.
Usate insieme per l'appunto, ne costruisci una funzione di lettura da database, dove ad esempio la data del compleanno corrisponde a quella attuale.
Ne prelevi il nome e cognome dell'utente.
E ne mandi una mail personalizzata.
Quindi anche volendo bisogna sapere come è formato il database, cosa devi leggere, e che operazione bisogna effettuare.
-
Se la schedulazione era la cosa piu difficile mi è di grande conforto....
Riepilogando quidni avendo la possibilità di scrittura dei dati nella tabella che mi interessa del mio database e potendo richiamare tutte le informazioni che ci sono nella stessa tabella quindi lettura, ed avendo ancora la possibilità di inviare una mail dal sito con codice asp non riesco a capire però come fare il confronto con la data di oggi e nel caso siano uguale inviare "quella mail" a "quell'indirizzo".
Potresti aiutarmi?
-
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.