Un formmail con Ajax
Pagina 2 di 2
Lo script ASP per l'invio delle email con AJAX
Lo script ASP in oggetto usa l'oggetto CDOSYS per l'invio delle email, ma è possibile sfruttare qualsiasi oggetto che permetta di inviare email con ASP.
La scelta è caduta su CDOSYS per semplicità.
Segue il codice del file email.asp:
<%@LANGUAGE = VBScript%>
<%
Dim nome, email, messaggio
nome = Server.HTMLEncode(Request.QueryString("nome"))
email = Server.HTMLEncode(Request.QueryString("email"))
messaggio = Server.HTMLEncode(Request.QueryString("messaggio"))
If nome = "" Or email = "" Or messaggio = "" Then
Response.Write "Tutti i campi sono obbligatori"
Else
Dim cdo
Set cdo = Server.CreateObject("CDO.Message")
With cdo
.To = "tua@mail.ext" ' Inserisci qui la tua mail
.From = email
.Subject = "Messaggio da " & nome
.TextBody = messaggio
.Send
End With
Set cdo = Nothing
Response.Write "Email inviata con successo"
End If
%>
In caso di successo inviamo l'email, altrimenti un controllo generico e potenziabile avvisa che tutti i campi sono obbligatori.
Lo script PHP per l'invio delle email con AJAX
Passiamo adesso alla versione PHP che utilizza la sua brava funzione predefinita mail().
Segue il codice del file email.php:
<?
$destinatario = "tua@mail.ext"; // Inserisci qui la tua mail
$nome = $_GET["nome"];
$email = $_GET["email"];
$messaggio = $_GET["messaggio"];
if ($nome == "" || $email == "" || $messaggio == "")
{
echo "Tutti i campi sono obbligatori";
}
else
{
mail($destinatario, "Messaggio da " . $nome, $messaggio, "From: $email");
echo "Email inviata con successo";
}
?>
Anche in questo caso il codice di controllo è potenziabile e lo script si comporta restituendo un errore se i cambi non sono stati compilati, oppure invia l'email.
Modifica al codice Javascript
Abbiamo precedentemente visto che la funzione Javascript di richiesta HTTP di AJAX richiama un file fittizio.
Nel caso ASP o nel caso PHP la riga:
url = "email.ext?nome=" + N + "&email=" + E + "&messaggio=" + M;va modificata, rispettivamente, come:
url = "email.asp?nome=" + N + "&email=" + E + "&messaggio=" + M;oppure:
url = "email.php?nome=" + N + "&email=" + E + "&messaggio=" + M;Conclusioni
L'esempio è stato testato sia per ASP che per PHP su server Windows e su PHP su server Linux e funziona, ma è soggetto ad alcuni potenziali errori.
Sappiamo bene che una querystring, composta da un qualsiasi numero di parametri, ospita massimo 255 caratteri, quindi un mittente "chiacchierone" finirebbe per mandare lo script in errore, sforando il limite previsto.
Si tratta quindi di un sistema da considerarsi come uno short message system via email ed è necessario potenziare il controllo (oltre che verificando l'espressione regolare dell'email) effettuando un controllo sulla lunghezza dei caratteri.
Ad esempio si potrebbe impostare un maxlength sulle due caselle di testo, ad esempio di 50 caratteri per il nome e 70 per l'indirizzo email e controllare, via ASP e via PHP sia che questi due campi non siano più lunghi (se qualcuno copia il form in locale), e che il messaggio non sia superiore a 150 caratteri.







