Antonio Feliziani
a- a+

Inviare email in ASP.NET 2.0

La stra-grande maggioranza dei siti web di oggi fanno largo utilizzo dell' invio delle email: molti le utilizzano per ricordare agli utenti iscritti la loro password di accesso, altri per confermare ai registrati l' avvenuta registrazione, ecc; altri invece permettono agli utenti di inviare segnalazioni al webmaster semplicemente compilando un semplice modulo (Nome, email oggetto, testo). Diviene quindi fondamentale, al giorno d' oggi, sapere come dar vita all' invio mail in una pagina web. In questo articolo vedremo appunto come inviare mail in ASP.NET, il che, vedrete, risulterà piuttosto semplice. Questo perchè, se già il .NET Framework 1.x integrava diverse funzioni nella classe System.Web.Mail che permettevano di inviare mail in maniera praticamente automatica, il .NET Framework 2.x integra qualcosa di simile, ovvero la classeSystem.Net.Mail, ma di ancora più avanzato.

Esplorando le classi del System.Net.Mail

Ci sono 16 classi nel System.Net.Mail, tutte atte all' invio mail tramite protocollo SMTP. Le due principali sono:

  • MailMessage: dichiara le proprietà quali "Inviante" , "Destinatario" , "Oggetto" , "Testo"
  • SmtpClient: invia il MailMessage ad un determinato server di posta in uscita (SMTP Server).

Quando vogliamo inviare una mail in ASP.NET dovremo:

  1. creare un oggetto MailMessage;
  2. assegnargli le divverse proprietà richieste;
  3. creare un' istanza della classe SmtpClient;
  4. specificare i dettagli riguardanti il server SMTP da usare (nel caso non sia già tutto impostato nel Web.config);
  5. Inviare il MailMessage all' SmtpClient tramite il metodo Send.

Per accorciare il numero di righe di codice c'è la possibilità di saltare i punti 1 e 2 e di dichiarare i dati quali "inviante" , "destinatario" , ecc direttamente quando si effettua la chiamata del metodo Send della classe SmtpClient.

Quelle sopra riportate sono le classi-base del System.Net.Mail, ne esistono diverse altre, utili ad esempio per l' invio degli allegati, per l' autenticazione ad un server SMTP, ecc.

Fornire i dettagli dell' SMTP Server

Nel momento in cui inviamo una mail tramite Outlook/Thunderbird ad un amico, il software si connette al  relay server SMTP, gli invia il contenuto della mail e tutte le informazioni necessarie al suo corretto invio; sarà poi il relay server a preoccuparsi di connettersi al server SMTP e di inoltrargli il messaggio.

C'è quindi bisogno, in ASP.NET, di fornire alla classe SmtpClient le impostazioni relative al relay server, quali l' hostname e la porta alla quale connettersi, se è o non è attivo il protocollo SSL e le eventuali credenziali di accesso.

Come abbiamo detto in precedenza, queste impostazioni potremmo definirle tanto nel codice della nostra pagina .aspx, quanto nel file Web.config del webserver. Analizziamo quest' ultimo caso. Innanzitutto dovremo aggiungere, all' interno del blocco <configuration>, la tag <system.net> dentro la quale inserire l' elemento <mailsettings> contenente a sua volta l' elemento <smtp> le quali impostazioni sono specificate nella tag <network>. Vediamo un semplice esempio che farà sicuramente chiarezza:

    <configuration>  <!-- Aggiunta delle info sul relay server nel Web.config -->  <system.net>    <mailSettings>      <smtp>        <network              host="relayServerHostname"              port="portNumber"             userName="username"             password="password" />      </smtp>    </mailSettings>  </system.net>  <system.web>    ...  </system.web></configuration>

Analizziamo quanto sopra-riportato: l' attributo host contiene l' IP o l' hostname del relay server (che sarà qualcosa simile a smtp.tuoprovider.it), port conterrà la porta del relay server alla quale inviare i pacchetti; nel caso si sfrutti un server che richiede autenticazione, dovremo impostare anche gli attributi Username e Password.

Ma se ben ricordate, tra le proprietà dei relay server vi è anche l' utilizzo o no del protocollo SSL, i tempi di timeout, ecc; queste non possono essere gestite dal web.config e vanno definite nel codice della pagina.

Form di Invio Mail al Webmaster

Per vedere, nella pratica, come inviare una mail tramite codice ASP.NET, immaginiamo di voler creare una pagina tramite la quale gli utenti del sito possono scrivere al webmaster. A chi vuole usufruire del servizio vengono richiesti il proprio indirizzo email, l' oggetto del messaggio ed il testo del messaggio. Ecco come organizzeremo il layout della pagina:

    <table border="0">
    <tr>
        <td><b>Your Email:</b></td>
        <td><asp:TextBox runat="server" ID="UsersEmail" Columns="30"></asp:TextBox></td>
    </tr>
    <tr>
        <td><b>Subject:</b></td>
        <td><asp:TextBox runat="server" ID="Subject" Columns="30"></asp:TextBox></td>
    </tr>
    <tr>
        <td colspan="2">
            <b>Body:</b><br />
            <asp:TextBox runat="server" ID="Body" TextMode="MultiLine" Columns="55" Rows="10"></asp:TextBox>
        </td>
    </tr>
    <tr>
        <td colspan="2" align="center">
            <asp:Button runat="server" ID="SendEmail" Text="Send Feedback" />
        </td>
    </tr>
</table>

Creata la grafica della pagina, bisognerà fare in modo che, al click del bottone Submit, venga eseguita la procedura di invio email. Creiamo quindi un' evento Click per il bottone, nel quale andremo a definire l' oggetto MailMessage per poi inviarlo tramite l' SmtpClient. Ecco il codice:

    Protected Sub SendEmail_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles SendEmail.Click
    '!!! Modificare questo valore con il 'proprie indirizzo email
    Const ToAddress As String = "mail@provider.com"
    '(1) Crea l' istanza MailMessage
    Dim mm As New MailMessage(UsersEmail.Text, ToAddress)
    '(2) Assegna le proprietà all' oggetto MailMessage
    mm.Subject = Subject.Text
    mm.Body = Body.Text
    mm.IsBodyHtml = False
    '(3) Crea l' oggetto SmtpClient
    Dim smtp As New SmtpClient
    '(4) Invia il MailMessage(usando le impostazioni   'del server contenute nel Web.config)
    smtp.Send(mm)
End Sub

La nostra form di invio mail è ora pronta per l' utilizzo!

QUI trovate la sorgente di quanto sopra-spiegato.



Ti potrebbe interessare anche

commenta la notizia

C'è 1 commento
Francesco
Hai dubbi su questo articolo?