• User

    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


  • ModSenior

    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.

    1. Ogni giorno, tu clicchi sull'url di controllo (Sconsigliato eh eh).
    2. Attraverso uno scheduler che hai sul tuo pc, gli fai lanciare periodicamente a un certo orario quella pagina.
    3. Esistono alcuni siti che offrono questo servizio a costi relativamente bassi.

  • User

    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!


  • ModSenior

    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.


  • User

    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?


  • ModSenior

    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.


  • User

    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.


  • ModSenior

    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 
    

  • User

    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?


  • ModSenior

    Cavoli scusa che stupido che sono certo ci va il then.

    if(isarray(vettore)) then
    .....
    end if

    Il blocco dice.
    Se abbiamo un risulato effettivo, cioè almeno una persona nata oggi, allora ....
    .....
    fine blocco.


  • User

    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 13

    alla 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


  • User

    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 😉


  • ModSenior

    Ora che errori ti da?
    P.S occhio alle maiuscole nei post.


  • User

    Il solito errore alla linea 13 cioè:

    Microsoft VBScript runtime error '800a01a8'
    Object required: 'Conn' /ita/include/aa.asp, line 13

    Non capisco perche!


  • ModSenior

    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.


  • User

    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 11

    la linea 11 è questa : objConn.Open strConn

    grazie ancora per l'attenzione...;-)


  • ModSenior

    Ma ora sembriamo esserci sembra essere un problema di database non più di codice.


  • User

    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


  • ModSenior

    Su che hosting sei, direi forse Aruba visto la stringa... quindi non dovrebbero esserci problemi.

    Quell'errore dovrebbe essere generato quando.

    1. Il file potrebbe essere corrotto.
    2. Il file è salvato magari in un formato non giusto, prova con mdb 2003.
    3. Il percorso potrebbe essere sbagliato.

    Prova con queste verifiche prima.


  • ModSenior

    Su che hosting sei, direi forse Aruba visto la stringa... quindi non dovrebbero esserci problemi.

    Quell'errore dovrebbe essere generato quando.

    1. Il file potrebbe essere corrotto.
    2. Il file è salvato magari in un formato non giusto, prova con mdb 2003.
    3. Il percorso potrebbe essere sbagliato.

    Prova con queste verifiche prima.