Ciao!

Come posso realizzare, all'interno di una pagina che invia delle mail, uno script per la lettura di un campo del db (dove trovo l'indirizzo mail del destinatario) affinche questo venga messo come destinatario (scusate il gioco di parole) della mail?

mi basterebbe anche vedere qualche tutorial o esempio di chi l'ha gia realizzato...

grazie 1000!


Marina di Camerota OnLine
VicenzaSoftware:Creazione siti web
Forum Tecnologie
la procedura di lettura dal database è sempre la stessa..
crei la connessione
crei il comando
leggi i dati

se usi sql server, puoi utilizzare le classe del namespace System.Data.SqlClient, se invece usi Access, il namespace da utilizzare è System.Data.OleDb

in linea di massima quindi puoi scrivere una cosa del genere:

using(SqlConnection conn = new SqlConnection(stringaDiConnessione))
{
   using(SqlCommand cmd = new SqlCommand)
   {
      cmd.CommandText = "SELECT * FROM ...";
      cmd.Connection = conn;
      conn.Open();
      SqlDataReader reader = cmd.ExecuteReader();
      while(reader.Read())
      {
         MailMessage mail = new MailMessage("da me", reader["CampoDelDB"].ToString(), "soggetto", "corpo");
         SmtpClient client = new SmtpClient("server smtp");
         client.Send(mail);
      }
      reader.Close();
   }
}


l'ho scritto così al volo.. non lo prendere come "legge"

Marchi Giuseppe
http://www.peppedotnet.it
Intanto ti ringrazio per la risp!!

Ma posso farlo anche se uso un AccessDataSource invece che la connessione da script? se si, in che modo?

ti posto lo script a cui sto lavorando, magari riesci a vedere meglio quello che sto facendo:


public void sendEmail_Click(object sender, EventArgs e)
    {


        MailMessage mail = new MailMessage();

        //mittente:
        mail.From = new MailAddress("staff@PalladioViaggi.com", "Staff PalladioViaggi.com");

        //Destinatario:
        mail.To.Add(new MailAddress(txtTo.Text));  <b>qui il dato viene attualmente preso da un campo testo </b>
        
        //Oggetto:
        mail.Subject = txtSubject.Value;
        mail.SubjectEncoding = System.Text.Encoding.GetEncoding("iso-8859-15");

        //corpo della mail:
        mail.Body = ..... ;
        mail.BodyEncoding = System.Text.Encoding.GetEncoding("iso-8859-15");
        mail.IsBodyHtml = true;

        // invio: 
        SmtpClient server = new SmtpClient();
        server.Host = "smtp.palladioviaggi.com";
        server.Send(mail);


        lblAvviso.InnerHtml = "E-mail inviata con successo!";


        // salvo tutto nel db
        DbNewsletter.Insert();

        txtNome.Text = "";
        txtCognome.Text = "";
        //txtTel.Text = "";
        txtTo.Text = "";
        txtBody.Text = "";
        txtSubject.Value = "";




    } 
</script>



spero che sia abbastanza esplicativo lo script....

Marina di Camerota OnLine
VicenzaSoftware:Creazione siti web
Forum Tecnologie
no, con un AccessDataSource non puoi fare quello che chiedi.
però puoi modificare il tuo script così:



public void sendEmail_Click(object sender, EventArgs e) 
{ 
        using(OleDbConnection conn = new OleDbConnection("Stringa di connession"))
        {
        using(OleDbCommand cmd = new OleDbCommand())
        {

        cmd.Connection = conn;
        cmd.CommandText = "SELECT * FROM ....";
        OleDbDataReader reader = cmd.ExecuteReader();
        while(reader.Read())
        {
        MailMessage mail = new MailMessage(); 

        //mittente: 
        mail.From = new MailAddress("staff@PalladioViaggi.com", "Staff PalladioViaggi.com"); 

        //Destinatario: 
        string destinatario = String.Format("{0}", reader["CampoDelDB"]);
        mail.To.Add(new MailAddress(destinatario));
         
        //Oggetto: 
        mail.Subject = txtSubject.Value; 
        mail.SubjectEncoding = System.Text.Encoding.GetEncoding("iso-8859-15"); 

        //corpo della mail: 
        mail.Body = ..... ; 
        mail.BodyEncoding = System.Text.Encoding.GetEncoding("iso-8859-15"); 
        mail.IsBodyHtml = true; 

        // invio: 
        SmtpClient server = new SmtpClient(); 
        server.Host = "smtp.palladioviaggi.com"; 
        server.Send(mail); 
        }

        }
        }


        lblAvviso.InnerHtml = "E-mail inviata con successo!"; 


        // salvo tutto nel db 
        DbNewsletter.Insert(); 

        txtNome.Text = ""; 
        txtCognome.Text = ""; 
        //txtTel.Text = ""; 
        txtTo.Text = ""; 
        txtBody.Text = ""; 
        txtSubject.Value = ""; 

}

Marchi Giuseppe
http://www.peppedotnet.it
scusa la domanda banalissima, ma non usando quasi mai questo tipo di connessione, la srtinga scritta cosi è corretta?

       using(OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=~/app_data/newsletter.mdb")) 

Marina di Camerota OnLine
VicenzaSoftware:Creazione siti web
Forum Tecnologie
no, perchè la tilde non viene letta.
o metti il percorso intero, oppure lo calcoli tramite il metodo Server.MapPath

string connectionString = String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0}\newsletter.mdb", Server.MapPath("~/app_data"));

Marchi Giuseppe
http://www.peppedotnet.it
ok, grazie, domani lo riprendo per debuggarlo, (sto trovando qualche errorino qua e la, ma penso che ho sbagliato io qualcosa), adesso mi stacco dal pc altrimenti saranno le mie retine a staccarsi!

razie per l'aiuto, ti faro sapere sugli eventuali sviluppi...

ciauz!

Marina di Camerota OnLine
VicenzaSoftware:Creazione siti web
Forum Tecnologie
Ciao Giuseppe, non sono riuscito ancora a risolvere il problema. Al momento in cui ti scrivo ho scritto questo codice:

    public void sendEmail_Click(object sender, EventArgs e)
    {
        using (OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=/app_data/" + Server.MapPath("newsletter.mdb")))

        {
            using (OleDbCommand cmd = new OleDbCommand())
            {
                cmd.Connection = conn;
                cmd.CommandText = "SELECT * FROM contatti";
                OleDbDataReader reader = cmd.ExecuteReader();
                while (reader.Read())
                {

...
...


Non mi da piu nessun errore, ma non so nemmeno come associare il CheckBox che si trova in un dataList con l'indirizzo estratto dal db, in realtà non so nemmeno se il codice fin qui scritto sia corretto...! aiuto!

ahimè, appena posso mi fo il corso di asp.net di aspItalia...
Modificato da ricardo78 il 28 ottobre 2008 20.21 -

Marina di Camerota OnLine
VicenzaSoftware:Creazione siti web
Forum Tecnologie

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.