Newsgroup: it.comp.lang.javascript
Titolo: Javascript e ASPMAIL

Buongiorno a tutti/e
Problema :)
Sto cercando di mandare delle mail con ASPMAIL (che risiede sul server del
mio provider), gli indirizzi mail sono su un database access.
Il problema consiste nel fatto che mi manda solo una mail pur leggendo tutto
il recordset.
Qualcuno ha qualche suggerimento e mi può dire dove sbaglio?
Posto lo script
<%@LANGUAGE = JScript%>
<%
   // Recupero i dati dal modulo
   var username = new String(Request.Form("username"));
   var password = new String(Request.Form("password"));
   var email = new String(Request.Form("email"));
   var oggetto = new String(Request.Form("oggetto"));
   var messaggio = new String(Request.Form("messaggio"));
   // Verifico username e password
   if ((username != "MIOUSER") || (password != "MIAPASSWORD")) {
        Response.Write("Autorizzazione negata");
        Response.End;
   }
   // Apro la connessione al database
   var Cn = new ActiveXObject("ADODB.Connection");
   var Sc = "driver={Microsoft Access Driver (*.mdb)};dbq=" +
Server.MapPath("../../db/news.mdb");
       Cn.Open(Sc);
   // Estraggo gli indirizzi email dal database
   var utenti = Cn.Execute("SELECT email FROM utenti");
   // Estraggo tutti gli indirizzi email dal database
 while (!utenti.EOF) {
  var MailRat = Server.CreateObject("SMTPsvg.Mailer");
  MailRat.FromAddress= "in...@mio.indirizzo";
  MailRat.RemoteHost = "
out.virgilio.it
";
  MailRat.AddRecipient ("",utenti("email"));
  MailRat.Subject = oggetto;
  MailRat.BodyText = messaggio;
  MailRat.SendMail();
  Response.Write(utenti("email") + " - ");
  MailRat=null;
  utenti.MoveNext();
      }
 Cn.Close();
    Response.Write("Newsletter inviata con successo.");
%>

   MailRat.AddRecipient ("",utenti("email"));
Con sql server così non funziona (immagino neanche con access).
prova ad esplicitare il value (utenti("email").value).
Se non va: sei sicuro della query?
Hai provato a togliere tutto dentro il while tranne il Response.write? Ti
scrive più di un record?
-- 
"Ti sei salvato
 o sei entrato in banca pure tu?"
									    A.V.

    var utenti = Cn.Execute("SELECT email FROM utenti");
Anche questo non mi piace molto.
var utenti=new ActiveXObject("ADODB.Recordset");
var cmdtemp=new ActiveXObject("ADODB.Command");
cmdtemp.commandType=1;
cmdtemp.ActiveConnection=Cn;
cmdtemp.commandText="select ....";
utenti=cmdtemp.execute();


 scrive piů di un record?


 ha scritto nel messaggio
news:3yt7dksr0jxa$.dlg@ID-147253.user.individual.net...


 Mailrat=null
No, è corretto; ma se dici che se metti 1 solo record con un altro
indirizzo e *NON* lo invia l'errore è a monte della distruzione
dell'oggetto
-- 
"e mai che mi sia venuto in mente
 di essere più ubriaco di voi
 di essere molto più ubriaco di voi"
									  F.D.A.

 ha scritto nel messaggio
news:4072y9l84hv7$.dlg@ID-147253.user.individual.net...


 .?????
Se con un indirizzo va e con un altro no contatta chi ti fornisce il server
con relativo oggetto.
-- 
"Affacciati affacciati benedici, guardaci
 guardaci...guardaci!
 Tanto sono quasi duemila anni che stai a guardare!"
									    E.B.

 ha scritto nel messaggio
news:m58p07gn...@ID-147253.user.individual.net...


Io farei:
  var utenti = executeQuery("SELECT email FROM utenti");
  var MailRat = Server.CreateObject("SMTPsvg.Mailer");
  while (!utenti.EOF) {
   MailRat.FromAddress= "in...@mio.indirizzo";
   MailRat.RemoteHost = "
out.virgilio.it
";
   MailRat.AddRecipient ("",utenti("email"));
   MailRat.Subject = oggetto;
   MailRat.BodyText = messaggio;
   MailRat.SendMail();
   Response.Write(utenti("email") + " - ");
   utenti.MoveNext();
  }
  MailRat=null;
  utenti.ActiveConnection.Close()
  utenti.ActiveConnection = null;
  utenti = null;
Includi poi queste funzioni, che fanno parte di un progetto in cui lavoro,
opportunam. modificate x la tua situazione:
function executeQuery(sSQL, oConn) {
var oRs;
  if (arguments.length == 1)
    oConn=null;
  try {
    oRs = getRecordset(oConn);
    oRs.Open(sSQL);
    return oRs;
  }
  catch(e) {
     return null;
  }
  finally {
    oConn = null;
  }
}
function getConnection() {
var oConn, sConn;
   try {
     sConn = "driver={Microsoft Access Driver (*.mdb)};dbq="
     sConn += Server.MapPath("../../db/news.mdb");
     oConn = Server.CreateObject("ADODB.Connection");
     oConn.Open(sConn);
      return oConn;
   catch(e) {
      return null;
   }
}
function getRecordset(oConn) {
var oRs;
  try {
    if (oConn == null)
      oConn = getConnection();
    oRs = Server.CreateObject("ADODB.Recordset")
    oRs.ActiveConnection = oConn;
    oRs.CursorType = 1      //adOpenKeyset
    oRs.CursorLocation = 3  //adUseClient
    oRs.LockType = 1        //adLockReadOnly
    oConn = null;
    return oRs;
  }
  catch(e) {
    oConn = null;
    oRs = null;
    return null;
  }
}
Ciao
Fabrizio
--
X-Privat "FREE Usenet" - 
http://www.newsserver.it