> > Articoli
> > E-Mail
Inviare un'e-mail con ASP.NET
In questo articolo vedremo come sia possibile, seguendo pochi e semplici passi, inviare un' e-mail dalle nostre pagine in ASP.NET.
Il listato è stato redatto sia in C# che in VB.NET (i due linguaggi più usati di ASP.NET).
Inoltre il codice è stato testato con la versione definitiva (la 1.0, non la Beta 2) del Framework di ASP.NET, scaricabile qui:
http://www.asp.net/download.aspx
Dunque, i passi da seguire sono fondamentalmente tre:
- Includere il giusto namespace ad inizio pagina. (nel nostro caso è System.Web.Mail). Questo contiene tutti gli oggetti che ci servono per inviare un'e-mail.
- Istanziare un oggetto della classe MailMessage e settarne le proprietà (almeno quelle fondamentali). Eccone un elenco (in grassetto quelle basilari):
| Proprietà | Descrizione |
| From | Indirizzo email del mittente |
| To | Indirizzo email del destinatario |
| Subject | Oggetto del messaggio |
| Body | Corpo del messaggio |
| CC | Lista di destinatari in copia di cortesia |
| BCC | Lista di destinatari in copia di cortesia non visibile |
| Priority | Priorità del messaggio – valori possibili: high, low oppure normal |
| BodyEncoding | Tipo di codifica del messaggio – valori possibili: Base64 oppure UUencode |
| BodyFormat | Formato del messaggio - valori possibili: Html oppure text |
| Attachments | Lista di oggetti di tipo MailAttachment allegati all'e-mail |
- Inviare l'e-mail grazie al metodo Send() dell'oggetto SmtpMail.
Ed ecco il listato in C#, ampiamente commentato:
<%@page language="C#"%>
<%@ Import Namespace="System.Web.Mail" %>
<SCRIPT LANGUAGE="C#" RUNAT="server">
public void SendMail (Object Obj, EventArgs E) {
// Creiamo un'istanza dell'oggetto MailMessage
MailMessage objMail = new MailMessage();
// questo e' il messaggio di default che comparira' a video dopo l'invio
string strTemp = "Email inviata correttamente";
// Queste sono le proprieta' obbligatorie che dobbiamo impostare
objMail.From = MsgFrom.Text;
objMail.To = MsgTo.Text;
objMail.Subject = MsgSubject.Text;
objMail.Body = MsgBody.Text;
// Queste invece sono opzionali
// impostiamo ad HTML il formato dell'email
// objMail.BodyFormat = MailFormat.Html;
// il formato di Codifica del messaggio : Base64, UUencode etc.
// objMail.BodyEncoding = MailFormat.Base64;
// settiamo ad alta la priorita' del messaggio
// objMail.Priority = MailPriority.High;
// alleghiamo un file all'email.
// objMail.Attachments.Add(new MailAttachment("c:\\file.zip"));
// la riga seguente serve solo se non abbiamo installato
// nel Web Server il servizio Microsoft SMTP
// SmtpMail.SmtpServer = "smtp.provider.it";
try { // proviamo ad inviare l'email...
SmtpMail.Send(objMail);
}
catch ( Exception Ex ) { // si e' verificato un errore
strTemp = "Errore nell'invio: ";
strTemp += Ex.Message;
}
lblMessaggio.Text = strTemp; // mostriamo a video l'esito dell'invio
}
</SCRIPT>
<HTML>
<BODY>
<form method="post" runat="server">
<table>
<tr>
<td></td>
<td><asp:Label id="lblMessaggio" runat="server"/></td>
</tr>
<tr>
<td>Destinatario:</td>
<td><asp:Textbox id="MsgTo" runat="server"/></td>
</tr>
<tr>
<td>Mittente:</td>
<td><asp:Textbox id="MsgFrom" runat="server"/></td>
</tr>
<tr>
<td>Oggetto del messaggio:</td>
<td><asp:Textbox id="MsgSubject" runat="server"/></td>
</tr>
<tr>
<td>Contenuto del messaggio:</td>
<td><asp:Textbox TextMode="multiline" Rows="7" id="MsgBody" runat="server"/></td>
</tr>
<tr>
<td> </td>
<td ALIGN="center"><asp:button Text="Invia" onClick="SendMail" id="Send" runat="server"/></td>
</tr>
</table>
</form>
</BODY>
</HTML>
E questo è invece il codice dell'analoga funzione SendMail() scritta però in VB.NET:
<SCRIPT LANGUAGE="VB" RUNAT="server">
Sub SendMail(Obj As Object, E As EventArgs)
' Creiamo un'istanza dell'oggetto MailMessage
Dim objMail AS new MailMessage
' questo e' il messaggio di default che comparira' a video dopo l'invio
Dim strTemp AS String = "Email inviata correttamente"
' Queste sono le proprieta' pricipali che dobbiamo impostare
objMail.From = MsgFrom.Text
objMail.To = MsgTo.Text
objMail.Subject = MsgSubject.Text
objMail.Body = MsgBody.Text
' Queste invece sono opzionali
' impostiamo ad HTML il formato dell'email
' objMail.BodyFormat = MailFormat.Html
' il formato di Codifica del messaggio : Base64, UUencode
' objMail.BodyEncoding = MailFormat.Base64
' settiamo ad alta la priorita' del messaggio
' objMail.Priority = MailPriority.High
' alleghiamo un file all'email.
' objMail.Attachments.Add(new MailAttachment("c:\file.zip"))
' la riga seguente serve solo se non abbiamo installato
' nel Web Server il servizio Microsoft SMTP
' SmtpMail.SmtpServer = "smtp.provider.it"
Try ' proviamo ad inviare l'email...
SmtpMail.Send(objMail)
Catch Ex AS Exception ' si e' verificato un errore
strTemp = "Errore nell'invio: "
' adesso Visual Basic supporta l'operatore di concatenazione del C
strTemp += Ex.Message
End Try
lblMessaggio.Text = strTemp ' mostriamo a video l'esito dell'invio
End Sub
</SCRIPT>
Se siamo più avvezzi al Visual Basic piuttosto che al C, basterà semplicemente cambiare la direttiva ad inizio pagina:
<%@page language="C#"%>
con quest'altra:
<%@page language="VB"%>
ed ovviamente utilizzare lo script in VB.NET. La parte HTML resta inalterata.
Arrivederci.