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

[!] Ci sono problemi con l'autore. Controllare il mapping sull'Author Manager

.

Questo articolo contiene link di affiliazione: acquisti o ordini effettuati tramite tali link permetteranno al nostro sito di ricevere una commissione nel rispetto del codice etico. Le offerte potrebbero subire variazioni di prezzo dopo la pubblicazione.

Ti consigliamo anche