Redazione
a- a+

Inviare Mail con ASP.NET

Vediamo come funziona l'oggetto System.Web.Mail. Codici ed esempi.

L'ambiente .NET mette a disposizione degli sviluppatori un nuovo oggetto per la gestione e l'invio di E-Mail da pagine ASP.NET: il System.Web.Mail

La prima operazione da eseguire è l'importazione del namespace System.Web.Mail:

<%@ Page Language="VB"%>     <%@ Import Namespace="System.Web.Mail" %>

il codice per l'invio della Mail è relativamente semplice ed intuitivo; viene creato un nuovo oggetto Mail che utilizza le stesse proprietà che erano presenti nel "vecchio" CDONTS: From, To, Cc, Bcc, Subject, Body:

  • From: contiene l'indirizzo Email del mittente
  • To: contiene l'indirizzo Email del destinatario
  • Cc: contiene l'indirizzo Email del destinatario per la Copia Conoscenza
  • Bcc: contiene l'indirizzo Email del destinatario per la Cc "nascosta"
  • Subject: contiene l'oggetto del messaggio che deve essere inviato
  • Body: contiene il testo del messaggio

Per inviare il messaggio basterà utilizzare il metodo Send(oggetto) per selezionare un webserver SMTP si usa il metodo Smtp=”indirizzo del mail server”. Se viene omesso il metodo Smtp si usera’ l’smtp di defoult del server dove risiede il modulo ASP.NET.

Dim mail As New MailMessage  mail.From = txtFrom.Value  mail.To = txtTo.Value  mail.Cc = txtCc.Value   mail.Bcc = txtBcc.Value   mail.Subject = txtSubject.Value  mail.Body = txtBody.ValueSmtpMail.Send(mail)

I metodi dell’oggetto Mail sono:

From: mittente

To: destinatario

Cc: indirizzo per conoscenza

Bcc: idirizzi per conoscenza modalità nascosta (non visibili in email)

Subject: oggetto dell’email

Body: corpo ermail

Ora è necessario inserire le istruzioni create all'interno di una funzione che eseguirà l'invio del messaggio solo al verificarsi di un determinato evento, ad esempio la pressione di un tasto.

<script language="VB" runat="server"%>Sub Button1_Click(sender As Object, e As EventArgs)  Dim mail As New MailMessagemail.From = txtFrom.Valuemail.To = txtTo.Valuemail.Subject = txtSubject.Valuemail.Body = txtBody.Value  SmtpMail.Send(mail)End Sub<%/script%>

Alla pressione del tasto Submit, presente nella pagina ASP.NET, verrà invocata l'esecuzione della funzione sopra indicata. Un ultimo consiglio: per migliorare l'esecuzione del codice è l'utilizzo del gestore delle eccezioni (Try ... Catch) che rappresenta una delle novità introdotte dal Framework .NET. Attraverso il costrutto Try ... Catch è possibile gestire ed "intercettare" tutti gli eventuali errori che si potranno verificare durante l'esecuzione della funzione di Invio Mail ed eseguire determinate istruzioni o visualizzare messaggi di errore:

<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)  ' l'invio è andato a buon fine, quindi nascondo il form  form1.visible = false  lblAvviso.InnerHtml = "Il messaggio è stato inviato correttamente!"Catch exc As Exception  ' si è verificato un errore  lblAvviso.InnerHtml = "Errore nell'invio:" & exc.ToStringEnd TryEnd Sub<%/script%>

La procedura appena vista serve per inviare le email in formato testo. Se il metodo BodyFormat dell’oggetto Mail è omesso, il messaggio di default viene formattato come messaggio di testo non HTML ed equivale ad usare l’istruzione

mail.BodyFormat = MailFormat.Text ‘ messaggio in formato testo

ma se vogliamo  inviare le email in formato HTML in modo da poterle formattare con i vari stili grafici allora dobbiamo aggiungere:

mail.BodyFormat = MailFormat.Html ‘ messaggio in formato html

per esempio un messaggio HTML può essere:

mail.BodyFormat = MailFormat.HtmlstrBody = "<html><body><b>Hello World</b>" &   " <font color=’red’>ASP.NET</font></body></html>"

L’email che arriverà conterrà il testo Hello World in grassetto (tag <b>) e la scritta ASP.NET di colore rosso (<font color=’red’>).

Ultimo dettaglio da vedere sono gli allegati. Con ASP.NET l’invio di email con allegati diventa molto facile e non ha bisogno di alcun componente esterno. Prima di tutto abbiamo bisogno che il file da allegare risieda in una cartella del server, successivamente useremo il metodo MailAttachment nel seguente modo:

mail.Attachments.Add(new MailAttachment("c:\temp\documento.pdf"))