Un modulo per raccolta dati e invio per posta elettronica, comunemente detto FormMail, è il mezzo più semplice e immediato per facilitare le comunicazioni tra voi e i vostri utenti, sfruttando il vostro sito web. E’ possibile creare un modulo FormMail per consentire quindi ai vostri visitatori di richiedervi un preventivo, inviare un commento o semplicemente per iniziare un contatto. Lo spazio web Loginstudio supporta il modulo FormMail in Asp.Net che è possibile creare con i passaggi seguenti. Per seguire i passaggi seguenti è sufficiente utilizzare un`applicazione di tipo notepad e un client per la pubblicazione via FTP (fai clic qui per leggere l’articolo sulla Pubblicazione del sito via FTP). CREAZIONE DEL MODULO FORMMAIL PER RICHIESTA INFORMAZIONI Passaggio1 Passaggio2 <%@ Page Language="C#" Debug="true"%> <script runat="server"> //invia_click è la funzione che raccoglie le informazioni del modulo e invia il messaggio if (Page.IsValid == true){ //convalida lato server //impostiamo gli indirizzi mittente e destinazione e l’oggetto del messaggio //inizializziamo la variabile che conterrà il testo html del messaggio //impostiamo il formato, la codifica e infine inviamo il messaggio </script> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> Passaggio 3 Passaggio 4 ANALISI DEL CODICE SCRIPT LATO SERVER <%@ Page Language="C#" Debug="true"%> Nella prima riga è specificata la direttiva Page nella quale è specificato il linguaggio in uso (C#) ed eventuali altre proprietà (es. Debug, il quale consente la visualizzazione completa di eventuali messaggi di errore in modo da facilitare la localizzazione e rimozione di errori nel codice). <%@ Import Namespace="System.Web.Mail" %> La seconda riga è una direttiva Asp.Net per l’importazione del Namespace System.Web.Mail. Un Namespace è come un contenitore di classi con le quali è possibile istanziare oggetti, in questo caso utili alla preparazione e all’invio del messaggio. void invia_click(object sender, EventArgs e){...} All’interno del tag <script...>...</script> è contenuta l’unica funzione invia_click all’interno della quale vengono recuperati i valori specificati dall’utente e inviato il messaggio. //impostiamo i parametri per il server smtp Un aspetto molto importante per il buon funzionamento di un formmail è l’impostazione dei parametri SMTP preposti alla localizzazione del server SMTP e ad eventuali altre credenziali. corpo_messaggio = "Nome: " + Nome.Value + "<br>"; In Asp.Net i valori dei campi di Input possono essere recuperati, nel codice lato server, in modo analogo a quanto avviene con le applicazioni di tipo desktop o locali. E’ sufficiente infatti richiamare il campo seguito dal un punto e dalla proprità Value (in taluni casi la proprietà da richiamare è Text). ANALISI DEL CODICE HTML Il codice html contiene, tra le altre cose, i campi di input del formmail (ogni campo ha proprietà runat=server per consentire il recupero dei valori in fase di esecuzione lato server) e i validator Asp.Net. <tr> Il motore ASP.Net, in fase di esecuzione elabora i tag validator e genera l’opportuno codice javascript per il controllo del testo inserito all’interno dei campi. Pagine correlate: Parametri SMTP per invio email da sito web
Nota. Gli utenti registrati possono inoltre scaricare, dalla loro area riservata, uno script alternativo per la creazione di svariati FormMail.
Lanciate l’applicazione notepad (es. Blocco note di Windows).
Copiate e incollate sul notepad il codice seguente (Xhtml, Asp.Net, C#).
<%@ Import Namespace="System.Web.Mail" %>
//la funzione verrà chiamata alla pressione del tasto "Invia modulo" (evento onclick)
void invia_click(object sender, EventArgs e){
//impostiamo la variabile che contiene l’indirizzo email del destinatario
string email_destinatario = "tuacasella@tuodominio.x";
//creiamo un oggetto MailMessage
MailMessage mail = new MailMessage();
//impostiamo i parametri per il server smtp
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", 1) ;
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", "email@tuodominio.x") ;
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", "password_Email") ;
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserver", "mail.tuodominio.x");
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserverport", 25);
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusing", 2);
mail.From = Email.Value;
mail.To = email_destinatario;
mail.Subject = "Richiesta informazioni e contatti";
string corpo_messaggio;
//riempiamo la variabile con un html generato dinamicamente
corpo_messaggio = "Nome: " + Nome.Value + "<br>";
corpo_messaggio += "Cognome: " + Cognome.Value + "<br>";
corpo_messaggio += "Email: " + Email.Value + "<br>";
corpo_messaggio += "Messaggio: " + Messaggio.Value + "<br>";
corpo_messaggio += "<hr>";
mail.BodyFormat = MailFormat.Html;
mail.Body = corpo_messaggio;
mail.BodyEncoding = System.Text.Encoding.GetEncoding("iso-8859-15");
SmtpMail.Send(mail);
//nascondiamo il formmail e visualizziamo il testo di conferma tramite in controllo server label (lbl_messaggio)
formmail.Visible = false;
lbl_messaggio.Text = "Gentile " + Nome.Value + ",<br/>il modulo è stato inviato correttamente.";
}
}
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<title>Richiesta informazioni e contatti</title>
</head>
<body>
<asp:Label id="lbl_messaggio" runat="server"></asp:Label>
<form runat="server" name="formmail" id="formmail">
<table border="0" cellpadding="4" cellspacing="0">
<tr>
<td align="left" colspan="2">
<h1>
Richiesta informazioni e contatti</h1>
</td>
</tr>
<tr>
<td align="right">
</td>
<td align="left">
(*) = campi obbligatori</td>
</tr>
<tr>
<td align="right">
<!-- Il campo nome, come anche gli altri campi contengono dei tag Asp.Net di tipo RequiredFieldValidator per la convalida lato server -->
Nome*<asp:RequiredFieldValidator id="RequiredFieldValidator1" runat="server" ControlToValidate="Nome"
Display="Dynamic" EnableClientScript="True" ErrorMessage="<br>Campo obbligatorio!"
SetFocusOnError="True"></asp:RequiredFieldValidator></td>
<td align="left">
<input id="Nome" runat="server" maxlength="255" type="text" size="30" /></td>
</tr>
<tr>
<td align="right">
Cognome*<asp:RequiredFieldValidator id="RequiredFieldValidator4" runat="server" ControlToValidate="Cognome"
Display="Dynamic" EnableClientScript="True" ErrorMessage="<br>Campo obbligatorio!"
SetFocusOnError="True"></asp:RequiredFieldValidator></td>
<td align="left">
<input id="Cognome" runat="server" maxlength="255" type="text" size="30" /></td>
</tr>
<tr>
<td align="right">
Email*<asp:RequiredFieldValidator id="RequiredFieldValidator2" runat="server" ControlToValidate="Email"
Display="Dynamic" EnableClientScript="True" ErrorMessage="<br>Campo obbligatorio!"
SetFocusOnError="True"></asp:RequiredFieldValidator><asp:RegularExpressionValidator
id="RegularExpressionValidator1" runat="server" ControlToValidate="Email" Display="Dynamic"
ErrorMessage="Email non valida!" ValidationExpression="w+([-+.’]w+)*@w+([-.]w+)*.w+([-.]w+)*"></asp:RegularExpressionValidator></td>
<td colspan="1" align="left">
<input type="text" id="Email" maxlength="255" runat="server" size="30" />
</td>
</tr>
<tr>
<td align="right">
<!-- Il campo nome, come anche gli altri campi contengono dei tag Asp.Net di tipo RequiredFieldValidator per la convalida lato server -->
Messaggio*<asp:RequiredFieldValidator id="RequiredFieldValidator3" runat="server"
ControlToValidate="Messaggio" Display="Dynamic" EnableClientScript="True" ErrorMessage="<br>Campo obbligatorio!"
SetFocusOnError="True"></asp:RequiredFieldValidator></td>
<td align="left">
<textarea id="Messaggio" runat="server" cols="30" rows="3"></textarea>
</td>
</tr>
<tr>
<td align="left" bgcolor="#ebebeb" colspan="2">
</td>
</tr>
<tr>
<td align="left">
</td>
<td align="left">
<!-- Il pulsante invio contiene la proprietà "onserverclick" che richiama la funzione "invia_click" alla pressione del mouse -->
<input name="Submit" type="submit" id="Submit" value="Invia modulo" runat="server"
onserverclick="invia_click" /></td>
</tr>
</table>
</form>
</body>
</html>
Salvate il file con il nome formmail.aspx e pubblicatelo nella directory principale del vostro spazio web (o in una sottocartella).
Chiamate il file con un browser tramite l’indirizzo http://www.dominio.x/formmail.aspx
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", 1) ;
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", "email@tuodominio.x") ;
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", "password_Email") ;
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserver", "mail.tuodominio.x");
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserverport", 25);
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusing", 2);
corpo_messaggio += "Cognome: " + Cognome.Value + "<br>";
Seguendo questo paradigma potete ampliare il formmail aggiungendo nuovi campi (indirizzo, città, telefono, etc..) senza alcuna limitazione.
<td align="right">
<!-- Il campo nome, come anche gli altri campi contengono dei tag Asp.Net di tipo RequiredFieldValidator per la convalida lato server -->
Nome*<asp:RequiredFieldValidator id="RequiredFieldValidator1" runat="server" ControlToValidate="Nome"
Display="Dynamic" EnableClientScript="True" ErrorMessage="<br>Campo obbligatorio!"
SetFocusOnError="True"></asp:RequiredFieldValidator></td>
<td align="left">
<input id="Nome" runat="server" maxlength="255" type="text" size="30" /></td>
</tr>
Sono disponibili diverse tipologie di Validator con funzioni specifiche oppure personalizzabili.
Per approfondimenti si consiglia lo studio di Asp.Net.
Autore: Antonio Di Dia
Ultimo aggiornamento: 16/02/2008
![]()
Scarica allegato |

Stampa pagina | Social Bookmark
![]()