Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 12 di 39
  • livello principiante
Indice lezioni

Inviare una e-mail con ColdFusion

Creiamo una pagina per inviare una e-mail con ColdFusion
Creiamo una pagina per inviare una e-mail con ColdFusion
Link copiato negli appunti

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.

Ti consigliamo anche