Corso ASP - Parte seconda
Form di feedback
Con il termine form di feedback si intende un modulo (form) riempiendo il quale un utente può inviare un messaggo semplicemente spingendo un pulsante.
<html>
<head>
<title>Input form per AspMail</title>
</head>
<body bgcolor="#FFFFFF">
<h1>Modulo di richiesta</h1>
<form method="POST" action="aspmail2.asp">
L'attributo action nel marcatore form serve a richiamare il file aspmail2.asp che elabora i dati inviati attraverso il modulo.
<table border="0">
<tr>
<td>Nome</td>
Ogni casella di testo deve essere identificata con un nome attraverso l'attributo name.
<td><input type="text" name="nome" size="25"></td>
</tr>
<tr>
<td>Telefono</td>
<td><input type="text" name="tel" size="15"></td>
</tr>
<tr>
<td>Indirizzo</td>
<td><textarea name="indirizzo" rows="3" cols="30"></textarea></td>
</tr>
<tr>
<td>Email</td>
<td><input type="text" name="email" size="20"></td>
</tr>
<tr>
<td>Note</td>
<td><textarea name="commenti" rows="4" cols="30"></textarea></td>
</tr>
<tr>
<td><input type="submit" value="Invia"></td>
</tr>
</table>
</form>
</body>
</html>
Il file AspMAIL2.asp
<html>
<head>
<title>Uso dell'ogetto request con le variabili</title>
</head>
<body bgcolor="#FFFFFF">
Set Mailer = Server.CreateObject("SMTPsvg.Mailer")
strNome = request.querystring("nome")
strTel = request.querystring("tel")
strIndirizzo = request.querystring("indirizzo")
strEmail = request.querystring("email")
strCommenti = request.querystring("commenti")
L'istruzione Server.CreateObject crea un oggetto a partire da un'istanza di un oggetto preesistente (SMTPsvgMailer).
La variabile Mailer, in quanto istanza dell'oggetto SMTPsvgMailer, assume tutte le caratteristiche ed i metodi dell'oggetto, ovvero FromName, FromAddress, RemoteHost, AddRecipient, BodyText, ecc.
Con l'istruzione request.querystring si passano al server i dati inseriti nelle varie caselle di testo assegnando ciascun valore a una variabile: strNome per nome strTel per tel e via di seguito.
Mailer.FromName = strNome
Mailer.FromAddress = strEmail
Con queste due istruzioni si assegnano nome e indirizzo del mittente. Questi sono campi obbligatori.
Mailer.RemoteHost = "mail.mix.it"
Con queste due istruzioni si assegna quindi l'indirizzo del server SMTP attraverso il quale inoltrare la posta.
Mailer.AddRecipient "Nome Cognome", "nome.cognome@telecomitalia.it"
Quest'istruzione permette di assegnare l'indirizzo del destinatario.
Mailer.Subject = "Modulo on line di informazioni"
e quest'altra il Subject del messaggio.
strBody = "Caro Nome e Cognome" & vbCrLf & vbCrLf
strBody = strBody & "Il mio nome è " & strNome & vbCrLf
strBody = strBody & "Abito in " &strIndirizzo & vbCrLf
strBody = strBody & "Il mio numero di telefono è " & strTel & vbCrLf
strBody = strBody & "La mia e-mail è " &strEmail & vbCrLf
strBody = strBody & "Ti invio i miei commenti: " &strCommenti & vbCrLf
Mailer.BodyText = strBody
Con queste due istruzioni si definisce il corpo del messaggio. Ogni variabile strBody assume il valore della stringa tra virgolette più i caratteri vbCrLf che servono ad andare a capo. Ogni strBody viene concatenata alla successiva in modo che strBody risultante costituisca il corpo del messaggio.
Per verificare il corretto inserimento dei dati si può realizzare una sequenza di istruzioni simile alla precedente:0
strPrimaLinea = "Il nome fornito è: " & strNome
strSecLinea = "Il numero di telefono indicato è: " & strTel
strTerzaLinea = "L'indirizzo fornito: " & strIndirizzo
strQuartaLinea="La e-mail fornita:" &strEmail
strQuintaLinea="I commenti proposti sono:"&strCommenti
Per inviare il messaggio si può utilizzare il metodo SendMail. A questo proposito è necessario ricordare che SendMail si appoggia al protocollo SMTP (Simple Mail Transfer Protocol) per l'invio della posta elettronica e che quindi occorre sempre specificare l'indirizzo del server SMTP cioè della macchina che si occupa di inviare i messaggi.
if Mailer.SendMail then
Response.Write "Posta Inviata..."
response.write strPrimaLinea & "<BR>"
response.write strSecLinea & "<BR>"
response.write strTerzaLinea & "<BR>"
response.write strQuartaLinea & "<BR>"
response.write strQuintaLinea & "<BR>"
else
Response.Write "Invio del messaggio fallito. Controllare il nome del server di posta e la connessione TCP/IP...<br>"
SendMail può restituire un valore vero o falso. Se si verifica la condizione vero Mailer.SendMail(True), il browser visualizzerà il messaggio "Posta Inviata" e un resoconto dei dati inseriti; in caso contrario (else) il browser visualizzerà un messaggio che comunicherà all'utente la presenza di problemi nell'invio dei dati.
Response.Write Mailer.Response
end if
%>
</body>
</html>
Infine, utilizzando l'oggetto Response e il metodo Write si ottiene una stampa a video di tutte le variabili.
Per funzionare, lo script appena descritto richiede il componente ASPMail (smtpsvg.dll) che va registrato utilizzando l'istruzione da riga di comando regsvr32 [drive]:\[percorso]\smtpsvg.dll.
Proprietà e metodi del componente ASPMail
Proprietà
FromName
Nome del mittente.
FromAddress
Indirizzo e-mail del mittente.
Subject
L'oggetto, ovvero il titolo, del messaggio.
BodyText
Il testo del messaggio.
RemoteHost
Il server SMTP al quale appoggiarsi per l'invio del messaggio.
Metodi
AddRecipient name, email addr
Inserisce nome e indirizzo e-mail nel campo "To:" del messaggio.
SendMail
Non dispone di alcuna proprietà; si limita a restituire un valore True o False a indicare la riuscita o il fallimento nell'invio del messaggio e-mail.
Errori
Una volta invocato il SendMail e verificato l'avvenuto invio del messaggio, in caso di errore è utile poter conoscere la condizione che l'ha causato. ASPMail dispone di una proprietà Response contenente una descrizione delle cause del mancato invio del messaggio.
Esempio
if Mailer.SendMail then
'Invio del messaggio riuscito
response.write ("Messaggio inviato")
else
'Invio del messaggio non riuscito
response.write ("Impossibile inviare il messaggio")
response.write ("a causa del seguente errore: " & Mailer.Response)
end if
|