Layer 06

Header di una mail in coldfusion

Con questo articoletto voglio spiegare come fare almeno la prima pagina di un webmail, con la sola possibilità di leggere l’intestazione della mail.
L’articolo spunta fuori dalla guida in linea di coldfusion 4.5 ma è applicabile a tutte le versioni che riconoscono il tag cfpop La teoria:
Sintatticamente cfpop è abbastanza semplice e senza bisogno di molti parametri ci può aiutare al nostro scopo, di seguito riporto la sintassi completa presa dalla guida in linea:

<cfpop SERVER="nome del server"
    PORT="porta del server"
    USERNAME="nomeutente"
    PASSWORD="password"
    ACTION="azione"
    NAME="nome della query"
    MESSAGENUMBER="numero"
    ATTACHMENTPATH="percorso"
    TIMEOUT="secondi"
    MAXROWS="numero"
    STARTROW="numero"
    GENERATEUNIQUEFILENAMES="booleano"

Analizziamo e vediamo come utilizzare l’azione getHeaderOnly:
Questo tipo di action ci permette di scaricare dal server specificato una lista di record come se fosse una query come il tag <cfquery>
Possiamo quindi trattare la variabile specificata nell’opzione name= come una vera e propria query
quindi la nostra istruzione risulterà così composta:

<cfpop server="mail.mioserver.it" username="utente" password="pwd" action="getHeaderOnly" name="lista"&gt

A questo punto avremo nella variabile #lista# i messaggi nella nostra casella e-mail.
Quali sono i record della variabile lista? eccoli:

Campo Descrizione
date Data della mail
from Mittente della mail
messagenumber Numero identificativo della mail
replyTo Indirizzo per le risposte
subject Oggetto della mail
cc Indirizzi in copia conoscenza
to Destinatari della mail

Prima decevamo che era possibile trattare la variabile lista proprio come una query ed infatti sono disponibili anche i soliti campi di controlli quali:
  RecordCount: numero di record nella variabile lista
  CurrentRow: numero della riga attuale
  ColumnList: descrizione delle colonne presenti nella variabil (in formato lista)

Utilizzando ora tutto quello che è stato scritto possiamo scrivere uno script per la lettura dell’intestazione delle mail presenti in dato account di un dato server.
Il codice è stato preso direttamente dalla guida in linea di ColdFusion

<!--- This view-only example shows the use of CFPOP --->
<HTML>
<HEAD>
<TITLE>CFPOP Example</TITLE>
</HEAD>
<BODY>
<H3>CFPOP Example</H3>
<P>CFPOP allows you to retrieve and manipulate mail
in a POP3 mailbox.  This view-only example shows how to
create one feature of a mail client, allowing you to display
the mail headers in a POP3 mailbox.
<P>
<CFIF IsDefined("form.server ")>
<!--- make sure server, username are not empty --->
<CFIF form.server is not "" and form.username is not "">
     <CFPOP SERVER= "#server# " USERNAME=#UserName# PASSWORD=#pwd#
     ACTION= "GETHEADERONLY " NAME= "GetHeaders ">
     <H3>Message Headers in Your Inbox</H3>
     <P>Number of Records:
     <CFOUTPUT>#GetHeaders.RecordCount#</CFOUTPUT></P>
     <UL>
     <CFOUTPUT QUERY="GetHeaders">
         <LI>Row: #CurrentRow#:  From: #From# -- Subject: #Subject#
     </CFOUTPUT>
    </UL>
</CFIF>
</CFIF>
<FORM ACTION= "cfpop.cfm " METHOD= "POST ">
  <P>Enter your mail server:
  <P><INPUT TYPE= "Text " NAME= "server ">
  <P>Enter your username:
  <P><INPUT TYPE= "Text " NAME= "username ">
  <P>Enter your password:
  <P><INPUT TYPE= "password " NAME= "pwd ">
  <INPUT TYPE= "Submit " NAME= "get message headers ">
</FORM>
</BODY>
</HTML>

Non è speciale e non fa nulla di particolare, ma visualizza correttamente le intestazioni. ]]>