Inviare email in ASP.NET 2.0
La stra-grande maggioranza dei siti web di oggi fanno largoutilizzo dell' invio delle email: molti le utilizzano perricordare agli utenti iscritti la loro password di accesso,altri per confermare ai registrati l' avvenutaregistrazione, ecc; altri invece permettono agli utenti diinviare segnalazioni al webmaster semplicemente compilando unsemplice modulo (Nome, email oggetto, testo). Diviene quindifondamentale, al giorno d' oggi, sapere come dar vitaall' invio mail in una pagina web. In questo articolovedremo appunto come inviare mail in ASP.NET, il che,vedrete, risulterà piuttosto semplice. Questoperchè, se già il .NET Framework1.x integrava diverse funzioni nella classeSystem.Web.Mail che permettevano di inviare mail in manierapraticamente automatica, il .NET Framework 2.xintegra qualcosa di simile, ovvero laclasseSystem.Net.Mail, ma di ancora piùavanzato.
Esplorando le classi delSystem.Net.Mail
Ci sono 16 classi nel System.Net.Mail, tutte atteall' invio mail tramite protocollo SMTP. Le dueprincipali 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:
- creare un oggetto MailMessage;
- assegnargli le divverse proprietà richieste;
- creare un' istanza della classe SmtpClient;
- specificare i dettagli riguardanti il server SMTP da usare (nel caso non sia già tutto impostato nel Web.config);
- Inviare il MailMessage all' SmtpClient tramite il metodo Send.
Per accorciare il numero di righe di codice c'è lapossibilità di saltare i punti 1 e 2 e di dichiarare idati quali "inviante" , "destinatario" ,ecc direttamente quando si effettua la chiamata del metodoSend della classe SmtpClient.
Quelle sopra riportate sono le classi-base delSystem.Net.Mail, ne esistono diverse altre, utili adesempio per l' invio degli allegati, per l'autenticazione ad un server SMTP, ecc.
Fornire i dettagli dell' SMTPServer
Nel momento in cui inviamo una mail tramiteOutlook/Thunderbird ad un amico, il software si connetteal relay server SMTP, gli invia il contenuto della maile tutte le informazioni necessarie al suo corretto invio;sarà poi il relay server a preoccuparsi diconnettersi al server SMTP e di inoltrargli il messaggio.
C'è quindi bisogno, in ASP.NET, di fornirealla classe SmtpClient le impostazioni relative al relayserver, quali l' hostname e la porta alla qualeconnettersi, se è o non è attivo il protocolloSSL e le eventuali credenziali di accesso.
Come abbiamo detto in precedenza, queste impostazionipotremmo definirle tanto nel codice della nostra pagina.aspx, quanto nel file Web.config del webserver. Analizziamoquest' ultimo caso. Innanzitutto dovremo aggiungere,all' interno del blocco <configuration>,la tag <system.net> dentro laquale inserire l'elemento <mailsettings> contenente a suavolta l' elemento <smtp> le qualiimpostazioni sono specificate nella tag<network>. Vediamo un semplice esempio chefarà 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 hostcontiene l' IP o l' hostname del relay server (chesarà qualcosa simile a smtp.tuoprovider.it), portconterrà la porta del relay server alla quale inviarei pacchetti; nel caso si sfrutti un server che richiedeautenticazione, dovremo impostare anche gli attributiUsername e Password.
Ma se ben ricordate, tra le proprietà dei relay servervi è anche l' utilizzo o no del protocollo SSL, itempi di timeout, ecc; queste non possono essere gestite dalweb.config e vanno definite nel codice della pagina.
Form di Invio Mail al Webmaster
Per vedere, nella pratica, come inviare una mail tramitecodice ASP.NET, immaginiamo di voler creare una paginatramite la quale gli utenti del sito possono scrivere alwebmaster. A chi vuole usufruire del servizio vengonorichiesti il proprio indirizzo email, l' oggetto delmessaggio ed il testo del messaggio. Ecco come organizzeremoil 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 modoche, al click del bottone Submit, venga eseguita la proceduradi invio email. Creiamo quindi un' evento Click per ilbottone, nel quale andremo a definire l' oggettoMailMessage per poi inviarlo tramite l' SmtpClient. Eccoil 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!
QUItrovate la sorgente di quanto sopra-spiegato.
- Articolo precedente Interazioni e applicazioni Asp Net 2.0 con Excel e Word
- Articolo successivo Creare siti web e applicazioni multilingua con Asp Net 2.0