![]() |
|
Una Newsletter in ASP.NET
Concesso in esclusiva a MrWebmaster.it - E' vietata la pubblicazione senza espresso consenso del proprietario
<%@ Page Language="VB" ValidateRequest="false" %>
<%@ Assembly Name="ADODB" %>
<%@ Import Namespace="ADODB" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Text.RegularExpressions" %>
<script runat="server">
Private Sub Newsletter(sender As Object, e As EventArgs)
' Espressione regolare indirizzo email in ASP.NET
Dim re As New Regex("(?<user>[^@]+)@(?<host>.+)")
' Controllo che l'email inserita sia valida
If re.IsMatch(Email.Text) = False Then
Messaggio.Text = "Inserisci un indirizzo email corretto"
Exit Sub
End If
' Dichiaro la connessione ed il recordset
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
' Apro la connessione
cn.Open("driver={Microsoft Access Driver (*.mdb)};dbq=" _
& Server.MapPath("database.mdb"))
' Apro il recordset e verifico se l'email inserita esiste o meno
rs.Open("SELECT email FROM newsletter WHERE email LIKE '" _
& Email.Text & "'", cn, 1)
' Se l'utente decide di iscriversi...
If I.Checked Then
If rs.EOF Then
' ... se l'email non esiste effettuo la registrazione
cn.Execute("INSERT INTO newsletter (email) VALUES ('" & Email.Text & "')")
Messaggio.Text = "Registrazione effettuata con successo"
Else
' ... oppure lancio un messaggio di avviso
Messaggio.Text = "Sei già iscritto alla Newsletter"
End If
rs.Close()
cn.Close()
Exit Sub
End If
' Se l'utente decide di cancellarsi...
If C.Checked Then
If rs.EOF Then
' ... se l'email non esiste lancio un messaggio di avviso
Messaggio.Text = "Impossibile cancellare un indirizzo inesistente"
Else
' ... oppure effettuo la cancellazione
cn.Execute("DELETE * FROM newsletter WHERE email LIKE '" & Email.Text & "'")
Messaggio.Text = "Cancellazione effettuata con successo"
End If
rs.Close()
cn.Close()
Exit Sub
End If
End Sub
</script>
<html>
<head>
<title>Una Newsletter in ASP.NET</title>
<basefont size="2" face="Verdana">
</head>
<body>
<center>
<h1>NEWSLETTER</h1>
<form id="Modulo" runat="server">
<asp:TextBox id="Email" runat="server" MaxLength="50" Text="Tua email..." /><br><br>
<asp:RadioButton id="I" GroupName="Azione" runat="server" Text="Iscriviti" checked="true" />
<asp:RadioButton id="C" GroupName="Azione" runat="server" Text="Cancellati" /><br><br>
<asp:Button runat="server" Text=" OK " OnClick="Newsletter" /><br><br>
<asp:Label id="Messaggio" runat="server" />
</form>
</center>
</body>
</html>
E' ovvio che l'invio di una Newsletter è una pratica destinata al Webmaster (o Amministratore) del sito e la sezione che permette l'invio in automatico a tutti gli iscritti dev'essere protetta per evitare che chiunque possa adoperarla.La soluzione consigliata è quella di creare una vera e propria area riservata, sia in stile ASP tradizionale che con i mezzi messi a disposizione da Microsoft e/o dalla piattaforma .NET; per il nostro esempio utilizzeremo un sistema che non amo particolarmente, tuttavia abbastanza sicuro. Il file newsletter.aspx è oggetto della prossima discussione. Al caricamento di pagina apparirà solo una TextBox che chiede una password statica, nel senso che è impostata stesso dallo sviluppatore ed utile a restituire una condizione vera; nel nostro esempio la password è demo. Una volta verificatasi la condizione, ovvero il riconoscimento da parte dello script di un utente autorizzato, verrà mostrato il modulo di invio che richiede i campi Oggetto e Corpo; una volta inviati i dati verranno estratti dal database tutti gli indirizzi email degli iscritti e formattati nel campo Bcc (copia carbone con destinatari invisibili) dello script che invia la mail. Di seguito il codice commentato:
<%@ Page Language="VB" ValidateRequest="false" %>
<%@ Assembly Name="ADODB" %>
<%@ Import Namespace="ADODB" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Web.Mail" %>
<script runat="server">
Private Sub Login(sender As Object, e As EventArgs)
' CAMBIA LA PASSWORD!!!
If Password.Text = "demo" Then NL_Box.Visible = True
End Sub
Private Sub Newsletter(sender As Object, e As EventArgs)
' Dichiaro la connessione ed il recordset
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
' Eseguo un basilare controllo sui campi
If Oggetto.Text = "" Or Corpo.Text = "" Then
Messaggio.Text = "I campo Oggetto e Corpo sono obbligatori"
Exit Sub
End If
' Apro la connessione
cn.Open("driver={Microsoft Access Driver (*.mdb)};dbq=" _
& Server.MapPath("database.mdb"))
' Estraggo tutti gli indirizzi email dal database
rs.Open("SELECT email FROM newsletter", cn, 1)
Dim destinatari As String
' Memorizzo in una variabile le email estratte in precedenza
While rs.EOF = False
destinatari += rs("email").Value & ","
rs.MoveNext()
End While
' Invio la Newsletter
Dim mail As New MailMessage
' Inserisci qui il tuo indirizzo email
mail.From = "user@account.ext"
' Inserisci ANCHE qui il tuo indirizzo email
mail.To = "user@account.ext"
mail.Bcc = destinatari
mail.Subject = Oggetto.Text
mail.Body = Corpo.Text
SmtpMail.SmtpServer = "smtp.fastwebnet.it"
SmtpMail.Send(mail)
Messaggio.Text = "Newsletter inviata con successo"
rs.Close()
cn.Close()
End Sub
</script>
<html>
<head>
<title>Una Newsletter in ASP.NET</title>
<basefont size="2" face="Verdana">
</head>
<body>
<center>
<h1>NEWSLETTER</h1>
<form id="Modulo" runat="server">
<center>
<asp:TextBox id="Password" runat="server" TextMode="Password" />
<asp:Button runat="server" Text="Login" OnClick="Login" /><br><br>
</center>
<table width="500" align="center" id="NL_Box" runat="Server" Visible="false">
<tr>
<td>
<hr>
Oggetto<br>
<asp:TextBox id="Oggetto" runat="server" Width="100%" /><br>
Corpo<br>
<asp:TextBox id="Corpo" runat="server" Width="100%" Height="150px" TextMode="MultiLine" />
<p align="right"><asp:Button runat="server" Text="Invia" OnClick="Newsletter" /></p>
<p align="center"><asp:Label id="Messaggio" runat="server" /></p>
</td>
</tr>
</table>
</form>
</center>
</body>
</html>
Da notare la riga di codice (HTML) che inizializza la tabella che contiene il modulo
<table width="500" align="center" id="NL_Box" runat="Server" Visible="false">a cui viene assegnato un ID, la si dichiara come oggetto server e si imposta nascosta; la tabella sarà resa visibile all'atto del riconoscimento dell'utente autorizzato mediante immissione della password. |
IN EVIDENZA
Effetto ombra su testo con Photoshop
Guadagna col tuo sito grazie a TradeD...
Guida XHTML
Riscrivere le URL con Asp
Riavviare IIS
HTTP 500 internal server error
Generare password casuali in Javascri...
Errore 80004005: Cannot update. Datab...
Introduzione ad Ajax ed Asp con Jscri...
Referenze dei Tag Html
Stringhe di connessione via ODBC e Ol...
Referenze dei fogli di stile Css
Le espressioni regolari in Javascript
|
||||
© 2001/2010 lukeonweb.net - A cura di Luca Ruggiero, Partita IVA 05564851219 -
Privacy |
Pubblicità |
Contatti
| |||||