Inviare e-mail con ASP.NET

di Daniele Bochicchio, in ASP.NET,
  • 0
  • 0
  • 0
  • 664 byte

Quasi tutte le applicazioni web oggi disponibili sul mercato utilizzano una routine per l'invio di e-mail in maniera automatica.

Le classic ASP ci mettono a disposizione CDONTS , attraverso il servizio SMPT incluso nei servizi internet di Windows, ma è anche possibile utilizzare altri component a pagamento o gratuiti.

Sebbene ASP.NET supporti ancora gli oggetti COM tradizionali, attraverso un'apposita funzionalità che permette di non buttare via gli investimenti già fatti, questi hanno delle prestazioni inferiori agli oggetti pensati esclusivamente per .NET.

In questo articolo vedremo come "tradurre" un normale form-to-mail che usa CDONTS ed una pagina ASP, in uno script ASP.NET che utilizzi invece il namespace System.Web.Mail .

Ovviamente, tutto il codice spiegato in questo articolo si riferisce alla beta 2 del .NET Framework.

Il namespace

Una delle novità di ASP.NET sono i namespace. Si tratta di "puntatori" a particolari oggetti, in grado di mettere a disposizione del framework determinate caratteristiche.

In questo caso utilizzeremo il namespace che ci permette di accedere alla gestione delle e-mail, ma ne sono disponibili altri in grado di dare accesso alle più disparate funzionalità, come ad esempio System.IO che permette di utilizzare le caratteristiche del file system.

All'opera

Per prima cosa, dobbiamo importare il namespace ed impostare il linguaggio utilizzato nella nostra pagina.

 <%@ Page Language="VB" %>
<%@ Import Namespace="System.Web.Mail" %>
Notiamo subito che anzichè utilizzare il VBScript, utilizziamo proprio il VB! Questo cambio è senza ombra di dubbio un grosso passo in avanti, perchè ci permette di utilizzare un linguaggio certamente più potente del semplice VBS.
 <script language="VB" runat="server">

Sub Button1_Click(sender As Object, e As EventArgs) 

     Try
    Dim mail As New MailMessage
    mail.From = txtFrom.Value
    mail.To = txtTo.Value
    mail.Subject = txtSubject.Value
    mail.Body = txtBody.Value
    SmtpMail.Send(mail)

    ' nascondo la form
    form1.visible = false

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

  Catch exc As Exception
    lblAvviso.InnerHtml = "Errore nell'invio del messaggio:
" & exc.ToString
  End Try

End Sub

</script>
Questa funzione si occuperà di eseguire l'invio vero e proprio, alla pressione del tasto di submit. Le cose che balzano subito all'occhio sono molte. Cominciamo con ordine. Per prima cosa, notiamo il costrutto Try...Catch , molto caro (ed utile) ai programmatori di Javascript, per esempio, che ci permette finalmente di avere una gestione delle eccezioni nettamente migliore rispetto al passato. Qualche riga più in basso, invece abbiamo le righe di codice che inviano il messaggio. In sostanza, rispetto a CDONTS cambia davvero poco. Vediamo quanto invece sia utile accedere alle proprietà dei server controls, nel nostro caso degli input box, un po' sulla falsa riga del VB classico. Interessante invece è la riga successiva a questa routine, che ci permette di nascondere totalmente, in fase di esecuzione, un blocco di codice.

CC, BCC e formato HTML

Allo stesso modo che con CDONTS, per inviare e-mail in CC (Copia Carbone) a qualcuno bisognerà utilizzare:
mail.Cc = "mail@server.com"
mentre per mandarla in BCC (blind carbon copy, copia carbone nascosta), questo pezzo di codice:
mail.Bcc = "mail@server.com"

Infine, è possibile inviare e-mail in formato HTML. Basta inserire prima di invocare il metodo Send, questo codice:

mail.BodyFormat = MailFormat.HTML

Conclusioni

ASP.NET è così pieno di novità, che decidere da cosa iniziare è francamente difficile.

Spero che questo esempio vi sia utile per iniziare ad approfondire o a smanettare con questa nuova tecnologia.
Come potete vedere (anche scaricando l'allegato che contiene tutto lo script) le differenze non sono molte, anche se c'è un approccio differente.

Approfondimenti

Attenzione: Questo articolo contiene un allegato.

Contenuti dell'articolo

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti