Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    12

    Invio email - prelevare mittente da db

    Ciao a tutti!
    Ho creato un semplice form per l'invio di email e funziona correttamente. Ora vorrei prelevare l'indirizzo del mittente in modo automatico da un database mysql anzichè farlo scrivere. Pur facendo svariate prove ispirandomi alle guide presenti in internet, non sono riuscita a risolvere il problema!
    Posto il codice:

    'Crea l'oggetto MailMessage
    Dim Messaggio As New MailMessage
    ' Imposta i parametri
    Messaggio.From = New MailAddress(Mitt.Text)
    Messaggio.To.Add(Dest.Text)
    Messaggio.Body = Mess.Text
    Messaggio.Subject = ("RE: Messaggio bacheca")
    Dim Smtp As New SmtpClient("out.alice.it")
    ' E-Mail in formato HTML
    Messaggio.IsBodyHtml = 1
    ' Invia la mail
    Smtp.Send(Messaggio)
    'Conferma l'avvenuto invio della mail
    Response.Redirect("MailOk.aspx")

    Grazie in anticipo

  2. #2
    Se questo è il tuo esempio non vedo particolari porzioni di codice in cui c'è un elemento ripetitivo che prelevi dati da un db mysql, prima di tutto devi decidere se utilizzare driver proprietari mysql per .net come strumento di connessione oppure ODBC, dopo puoi fare la query con il tuo driver scelto e ciclare nei record di "emails" inviando il messaggio per ognuna di esse.
    Chi sbaglia, apprende meglio di chi non ha mai commesso errori.
    DOT.NET Addicted since 2006 (My Blog)

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    12
    Sì infatti questo è il codice di base. All'interno dell'applicazione uso la seguente stringa di connessione:

    "Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\Database.mdf;Integrated Security=True;User Instance=True"

    e ho già effettuato delle prove tentando di prelevare il dato dal db, posto il codice:

    Dim Mitt As String = ""
    Dim conn As New SqlConnection()
    conn.ConnectionString = "Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\Database.mdf;Integrated Security=True;User Instance=True"
    Dim SelMail As SqlCommand = New SqlCommand("SELECT (Mail) FROM [SchedaDocente]", conn)
    Dim reader As SqlDataReader
    conn.Open()
    reader = SelMail.ExecuteReader()
    Mitt = reader.ToString
    'Creal'oggetto MailMessage
    Dim Messaggio As New MailMessage
    ' Imposta i parametri
    Messaggio.From = New MailAddress(Mitt)
    Messaggio.To.Add(Dest.Text)
    Messaggio.Body = Mess.Text
    Messaggio.Subject = ("RE: Messaggio bacheca")
    Dim Smtp As New SmtpClient("out.alice.it")
    ' E-Mail in formato HTML
    Messaggio.IsBodyHtml = 1
    ' Invia la mail
    Smtp.Send(Messaggio)
    conn.Close()
    Response.Redirect("MailOk.aspx")

    P.s. il ciclo non è necessario perchè il db è composto da un'unica riga che contiene l'indirizzo del mittente (non dei destinatari!).

  4. #4
    scusami.... ma tu hai parlato di un db mysql, qui stai usando sql server express... non è molto chiaro l'esempio riportato in base alle tue necessità.
    Chi sbaglia, apprende meglio di chi non ha mai commesso errori.
    DOT.NET Addicted since 2006 (My Blog)

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    12
    Comunque sia la stringa che ho riportato è quella che utilizzo per tutte le operazioni con il db all'interno della mia applicazione.
    Stabilita la connessione con il database, come è necessario proseguire? Bisogna creare un reader che prelevi il dato dalla tabella?

  6. #6
    hai dimenticato un passaggio, il reader deve "leggere" per poterti tirare fuori i record di cui hai bisogno, visto che per quanto riguarda la tua routine è necessario leggere solo il primo record devi fare cosi:

    codice:
    Dim Mitt As String = ""
    Dim conn As New SqlConnection()
    conn.ConnectionString = "Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated Security=True;User Instance=True"
    Dim SelMail As SqlCommand = New SqlCommand("SELECT (Mail) FROM [SchedaDocente]", conn)
    Dim reader As SqlDataReader
    conn.Open()
    reader = SelMail.ExecuteReader()
    reader.Read();
    Mitt = reader.GetString(0);
    'Creal'oggetto MailMessage
    Dim Messaggio As New MailMessage
    ' Imposta i parametri
    Messaggio.From = New MailAddress(Mitt)
    Messaggio.To.Add(Dest.Text)
    Messaggio.Body = Mess.Text
    Messaggio.Subject = ("RE: Messaggio bacheca")
    Dim Smtp As New SmtpClient("out.alice.it")
    ' E-Mail in formato HTML 
    Messaggio.IsBodyHtml = 1
    ' Invia la mail
    Smtp.Send(Messaggio)
    conn.Close()
    Response.Redirect("MailOk.aspx")
    reader.ToString() come avevi scritto tu è sbagliato, in quanto ti darebbe un risultato inatteso, dovresti prelevare da questo, dopo aver letto(reader.Read()) la colonna contenente il campo mail, io ho utilizzato l'indice (0) ma potresti anche scrivere reader.GetString("mail");

    Chi sbaglia, apprende meglio di chi non ha mai commesso errori.
    DOT.NET Addicted since 2006 (My Blog)

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    12
    Come puoi immaginare, adesso funziona a perfezione! Ti sono grata!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.