Editor  »  Guide  »  Guida Coldfusion Mx 

Inviare una e-mail con ColdFusion



Realizziamo ora una semplice interfaccia per l'invio di una e-mail tramite un form (o "modulo").

1. Crea un nuovo file contattami.cfm e salvalo nella solita cartella "discoteca".

2. Scrivi i due <cfinclude> per inserire l'intestazione e il piede della pagina. tra questi due tag, possiamo inserire un titolo e un testo come segue:

<!--- contattami.cfm: visualizza un form per l'invio di una mail --->

<cfinclude template="header.cfm">

<div class="CorpoPagina">
     <p class="titolo">Invia una mail al webmaster</p>
     <p>Compila il modulo e clicca su "Invia" per inviare la mail.</p>
</div>

<cfinclude template="footer.cfm">

Il CFML possiede dei tag per creare i form. Questi tag permettono una gestione un po' più avanzata di quello che possiamo fare con i semplici tag HTML, come ad esempio rendere obbligatoria la compilazione dei campi.

3. Ad esempio, aggiungi un <cfform> alla pagina contattami.cfm:

<!--- contattami.cfm: visualizza un form per l'invio di una mail --->

<cfinclude template="header.cfm">

<div class="CorpoPagina">
     <p class="titolo">Invia una mail al webmaster</p>
     <p>Compila il modulo e clicca su "Invia" per inviare la mail.</p>

     <p>
     <cfform action="invia_mail.cfm">

          La tua mail:<br>
          <cfinput name="Mail" type="text" size="50" maxlength="250" required="yes" message="Inserisci la tua e-mail">
          <br><br>
         
          Oggetto:<br>
          <cfinput name="Oggetto" type="text" size="50" maxlength="250" required="yes" message="Compila il campo oggetto.">
          <br><br>

          <strong>Messaggio: </strong><br>
          <textarea cols="50" rows="5" name="Messaggio"></textarea>
          <br><br>

          <input type="submit" value="Invia">
     </cfform>
     </p>
</div>

<cfinclude template="footer.cfm">

Aprendo la pagina "http://localhost:8500/discoteca/contattami.cfm" viene mostrato un semplice form HTML. Noi, anziché usare i soliti tag HTML <form> e <input>, abbiamo inserito <cfform> e <cfinput>. La sintassi di <cfform> è molto simile a quella di <form>, con la differenza che il "method" predefinito è "post". Inserire un <cfform> ci permette di usare, al suo interno, il tag <cfinput>, che crea un campo input con la possibilità di aggiungere un controllo del campo prima dell'invio del form. Nel nostro caso, abbiamo inserito tra gli attributi di <cfinput> un required="yes" che indica come obbligatoria la compilazione di tale, e un attributo "message" che mostrerà un'avviso nel caso in cui il campo non è stato compilato. Gli altri attributi di <cfinput> sono identici a quelli richiesti dal tag <input> nell'HTML standard.

Se fai delle prove, vedrai che il form non sarà inviato finché non compili il campo Oggetto e il campo Mail.

Come puoi notare, il form punta al file invia_mail.cfm che conterrà la parte destinata ad inviare la mail. Quando il visitatore clicca su "Invia":

  1. controlleremo se il messaggio è vuoto;
  2. se questo accade, dovrà essere visualizzato nuovamente il form;
  3. altrimenti sarà inviata la mail;
  4. una volta spedito il messaggio, il visitatore sarà riportato nella homepage del sito.

4. Salva un nuovo file vuoto con nome "invia_mail.cfm" nella cartella "discoteca". Questo file gestirà solamente la logica dell'invio, quindi non avremo bisogno di mostrare intestazione e piede della pagina.

5. Inserisci nel file invia_mail.cfm un controllo che verifichi che il messaggio è stato inviato dal form:

<cfif form.Messaggio EQ "">
     <cflocation url="contattami.cfm">
</cfif>

Con il tag <cfif> verifichiamo se è vera o falsa un'espressione. Se l'espressione è vera, allora ColdFusion esegue il codice contenuto all'interno del tag <cfif>. In questo caso controlleremo che l'espressione form.messaggio EQ "" sia vera. In ColdFusion, le variabili provenienti da un modulo hanno scope "form". Il loro nome è quello di ciascun campo nel modulo. La <textarea> che avevamo inserito ha nome messaggio (impostato tramite l'attributo name.

In CFML gli operatori di confronto sono:

EQ o IS (senza distinzione) per verificare l'uguaglianza

NEQ o IS NOT per verificare la disuguaglianza

LTE (Less Then Equal) per verificare se il primo valore è minore o uguale del secondo

LT (Less Then) per verificare se il primo valore è minore del secondo

GTE (Greater Then Equal) per verificare se il primo valore è maggiore o uguale del secondo

GT (Greater Then) per verificare se il primo valore è maggiore del secondo

ColdFusion non utilizza gli operatori diffusi in altri linguaggi di programmazione come <, <=, <> eccetera.

Con l'espressione form.Messaggio EQ "" eseguiamo quindi un confronto di uguaglianza tra la variabile form.Messaggio e la stringa vuota. Nota che anche qui, per utilizzare il valore della variabile, non l'abbiamo inserita tra due cancelletti. Non è necessario infatti utilizzare questa notazione all'interno del tag <cfif>.

In CFML, le stringhe sono distinte dagli apici o dai doppi apici. Ad esempio,

<cfset miaStringa = "Tanto va la gatta al lardo">
<cfif miaStringa EQ 'Tanto va la gatta al lardo'>
     <cfoutput>#miaStringa# che ci lascia lo zampino</cfoutput>
</cfif>

crea una variabile "miaStringa" contentente una stringa. Il <cfif> successivo verifica l'uguaglianza della variabile con una stringa utilizzando gli apici singoli anziché gli apici doppi. E' importante capire che in questo caso gli apici sono obbligatori: non utilizzando i cancelletti, <cfif> avrebbe dato errore valutando un'espressione simile:

<cfif miaStringa EQ Tanto>

poiché "Tanto" sarebbe stato intepretato come una variabile.

Con il tag <cflocation> ColdFusion porta il browser nella pagina indicata nell'attributo "url".

6. Utilizza la funzione trim() per tagliare gli eventuali spazi all'inizio e alla fine della variabile form.messaggio ed evitare, quindi, che vengano inviate e-mail il cui corpo è rappresentato solo da spazi:

<cfif trim(form.Messaggio) EQ "">
     <cflocation url="contattami.cfm">
</cfif>

7. Nel caso opposto, cioè in cui la variabile form.messaggio non è rappresentata da una stringa vuota, ColdFusion deve inviare una mail. Aggiungiamo quindi il tag <cfelse> all'interno di <cfif>. Ciò che sta a sua volta all'interno di <cfelse>...</cfif> sarà elaborato solamente se la condizione posta in <cfif> è falsa.

<cfif trim(form.Messaggio) EQ "">
     <!--- Se il messaggio è vuoto, riporta l'utente nella pagina contattami.cfm --->
     <cflocation url="contattami.cfm">
<cfelse>
     <!--- altrimenti invia la mail --->
</cfif>

8. Il tag <cfmail> è quello adibito all'invio di e-mail. Negli attributi del messaggio, si specificano mittente, oggetto e destinatario della mail. Il corpo del tag <cfmail> invece rappresenta il corpo dell'e-mail che sarà inviata:

<cfif trim(form.Messaggio) EQ "">
     <!--- Se il messaggio è vuoto, riporta l'utente nella pagina contattami.cfm --->
     <cflocation url="contattami.cfm">
<cfelse>
     <!--- altrimenti invia la mail --->
     <cfmail from="#form.mail#" to="giampaolo@bellavite.com" subject="#form.oggetto#">
          #form.messaggio#
     </cfmail>
</cfif>

L'attributo "from", quindi, dovrà contenere il contenuto della variabile form.mail (il campo mail del form); l'attributo "to" il destinatario della mail (in questo caso, l'indirizzo e-mail del webmaster) e l'attributo "subject" il contenuto della variabile form.oggetto proveniente dal form. All'interno del tag <cfmail> si inserisce il contenuto della mail (body) - che nel nostro caso è rappresentato dalla variabile proveniente dalla textarea "messaggio" inviata dal form.

Una volta spedita l'e-mail, il visitatore può essere spostato nella homepage del sito.

Aggiungiamo quindi un <cflocation> dopo il tag di chiusura </cfmail> che punti a index.cfm:

<cfif trim(form.Messaggio) EQ "">
     <!--- Se il messaggio è vuoto, riporta l'utente nella pagina contattami.cfm --->
     <cflocation url="contattami.cfm">
<cfelse>
     <!--- altrimenti invia la mail --->
     <cfmail from="#form.mail#" to="giampaolo@bellavite.com" subject="#form.oggetto#">
          #form.messaggio#
     </cfmail>
     <!--- Una volta spedito il messaggio, sposta il browser alla pagina index.cfm --->
     <cflocation url="index.cfm">
</cfif>

Il nostro file invia_mail.cfm è completato!

9. Infine, aggiungiamo un link alla homepage e al file contattami.cfm nel footer.cfm per creare una piccola barra di navigazione:

<!--- footer.cfm: contiene le dichiarazioni finali della pagina HTML e il piede delle pagine --->

<hr>
<div class="corpoPagina">
<cfset Oggi = Now()>
<span class="piede">
     <cfoutput>
          <a href="index.cfm">homepage</a> | <a href="contattami.cfm">Contattami</a> | Oggi è <strong>#LSDateFormat(Oggi, 'dddd, d mmmm yyyy')#</strong>
     </cfoutput>
</span>
</div>
</body>
</html>

Prova ora ad inviarti delle e-mail (assicurati di aver impostato il tuo indirizzo e-mail nel campo "to" di <cfmail>) collegandoti alla pagina: "http://localhost:8500/discoteca/contattami.cfm".

Puoi scaricare i file che abbiamo utilizzato fino ad ora da qui.

Ultimi articoli Editor

Adobe Edge, la prima animazione HTML5

Come creare una animazione HTML5 con Adobe Edge, esempio completo

Adobe Edge, l'interfaccia

Esaminiamo pannelli e menu del tool gratuito di Adobe per la...

Trasformazioni XSLT in Dreamweaver 8

Primo sguardo agli strumenti XML: trasformare un feed RSS

Layout senza tabelle con Dreamweaver 8

Esaminiamo gli strumenti CSS avanzati del software di Adobe/Macromedia

Il nuovo Dreamweaver 8

Panoramica delle principali novità dell'ultima release del popolare...

Altri articoli

Guide Editor

Guida WebMatrix

Entrare nel mondo dello sviluppo di applicazioni Web con Webmatrix,...

Guida Notepad++

Un editor testuale che funziona perfettamente anche come editor HTML...

Guida Aptana

Creare siti Web o applicazioni con Aptana, l'editor open source,...

Altre guide

Newsletter @Daily HTML.it

Ogni mattina, dal lunedì al venerdì, le novità pubblicate su tutti i siti tecnici del network HTML.it: articoli, guide, notizie dal Web, blog e molto altro.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Corso Webmaster base

18 Giugno 2012 a Milano
Disponibilità: 6 Posti

Corso Google AdWords Base

25 Giugno 2012 a Milano
Disponibilità: 7 Posti

Corso Google AdWords Base

05 Giugno 2012 a Roma
Disponibilità: 7 Posti

Corso Webmaster base

11 Giugno 2012 a Roma
Disponibilità: 7 Posti