• 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.


  • User

    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 16

    lalinea 16 è la seguente: vettore=rstmp.getrows


  • ModSenior

    Ma non capisco chi richiami questo file aa.asp, il codice che ti ho fornito io no. Quindi dove?


  • User

    Il codice che mi hai fornito è nella pagina denominata aa.asp, una semplice prova...

    Hai qualche soluzione?


  • ModSenior

    Proviamo cosi allora in quella riga scrivi cosi.

    if not  rstmp.eof then
       vettore=rstmp.getrows
    end if
    

    Vediamo se cosi va.