IPRO - PC Magazine Romania, Iulie 2003
SOLUŢII PENTRU PROGRAMATORII ŞI DESIGNERII WEB
Poşta: CFML şi poşta electronică
Ioan Alexandru Lazăr
Cred că aţi păţit asta măcar o dată: aţi găsit un sit care v-a impresionat
prin design ori conţinut, aţi vrut să-l felicitaţi pe autor sau să-i daţi o
sugestie, dar când aţi văzut la "Contact us" că trebuie să accesaţi iarăşi contul
dumneavoastră de mail, aţi renunţat. Mai ales dacă foloseaţi un serviciu exclusiv
webmail (mâna sus cei care au un cont gratuit la Yahoo ... exact!). Probabil
că unii au aceeaşi reacţie când văd situl dumneavoastră ... n-ar fi mai bine
ca vizitatorii să vă poată trimite părerile lor direct de pe sit?
Ei bine, folosind CFML (ColdFusion Markup Language), puteţi face lucrul acesta.
Dar CFML poate face chiar mai mult de atât. Folosind CFML puteţi construi un
client de e-mail în toată regula ... ceea ce, nu sună rău deloc, nu-i aşa?
acromedia a dotat ColdFusion cu posibilitatea de a interacţiona cu POP3 şi
SMTP cu efort minim din partea programatorului.
Haideţi să vedem deci cum putem folosi CFML pentru poşta electronică.
<CFMAIL>
Tag-ul <CFMAIL> îl veţi folosi, probabil, foarte des. <CFMAIL> trimite
un e-mail care conţine date obţinute în urma unei interogări (query) folosind
un server SMTP. Este foarte util când vreţi să lăsaţi un vizitator să vă trimită
mesaje direct de pe site, dintr-un formular (form).
Haideţi să aruncăm o privire la următoarea secvenţă:
<html>
<head>
</head>
<body>
<form name="frmContact"
Action="trimite_mail.cfm" Method="Post">
Email <input type="text" name="Email"><br>
Mesaj <br><textarea name="Mesaj" cols="40" class="textfields" rows="4"></textarea><br>
<input type="submit" name="submit" value="Trimite">
</form>
<cfmail to = "alx_std2@yahoo.com"
from = "#form.Email#"
subject = "E-Mail"
type="HTML" >
#form.Mesaj#
</cfmail>
</body>
</html>
Mai întâi am creat formularul într-un fişier numit trimite_mail.cfm.
Puteţi vedea că este vorba de un formular simplu - utilizatorul va completa
adresa lui de e-mail în câmpul Email, după care, atunci când va apăsa pe butonul
"Trimite", mesajul va fi trimis. De acest lucru se ocupă secvenţa:
<cfmail to = "alx_std2@yahoo.com"
from = "#form.Email#"
Subject = "E-Mail"
type="HTML" >
#form.Mesaj#
</cfmail>
<cfmail to = "alx_std2@yahoo. com" specifică adresa la care va fi trimis
mesajul. Aici, este o adresă "statică", dar dacă vreţi, de exemplu, să lăsaţi
utilizatorul să-i recomande unui prieten pagina dumneavoastră, puteţi adăuga
un câmp Destinatar şi apoi să scrieţi <cfmail to = "#Form.Destinatar#". Mai
departe, from = "#form.Email#" va specifica, în header-ul mesajului, adresa
celui care l-a trimis (evident, cu condiţia ca el să fi completat câmpul respectiv).
subject = "E-Mail" specifică subiectul (subject) mesajului. Şi acesta poate
fi dinamic. type="HTML" este un atribut opţional. Dacă nu îl includeţi, nu e
nici o problemă, dar e bine să-l includeţi, deoarece specifică faptul că mesajul
poate conţine tag-uri HTML. În fine, #form.Mesaj# specifică ceea ce trebuie
trimis. Nu e greu, nu?
<CFMAILPARAM>
Tag-ul <CFMAILPARAM> vă permite să folosiţi un attachement pentru mesajul
dumneavoastră sau să adăugaţi unele informaţii în header. Să luăm următorul
exemplu:
<cfmail from = "alx_std2@yahoo.com"
To = "agrozea@agora.ro"
Subject = "Corecturi">
<cfmailparam name = "Reply-To" value = "agrozea@agora.ro">
Am mai schimbat câte ceva. E mai bine acum?
<cfmailparam file = "c:\articole\cfm_mail.doc">
</cfmail>
În cazul în care mesajul ar fi un răspuns (reply) este preferabil să folosiţi
<cfmailparam name = "Reply-To" value = "agrozea@agora.ro">, ceea ce se
poate dovedi util. <cfmailparam file = "c:\articole\cfm_mail. doc"> specifică
fişierul ce va fi trimis ca attachement.
<CFPOP>
Aceia dintre dumneavoastră care sunt progamatori foarte-foarte talentaţi şi
cu o mare doză de timp liber (sau plătiţi foarte bine pentru ceea ce fac...)
pot folosi capabilităţile CFML de a utiliza căsuţele poştale (mailbox) POP3.
POP3 este "ceva" mult mai complex, care permite manipularea avansată a mesajelor.
Altfel spus, puteţi folosi POP3 pentru a scrie un client de
e-mail. Ia să vedem...
<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">
<h2>Mesaje<h2>
<p>Numărul de mesaje:
<cfoutput>#GetHeaders.recordCount#</cfoutput></p>
<ul>
<cfoutput query = "GetHeaders">
<li>Nr.: #currentRow#: De la: #From# Subiect: #Subject#
</cfoutput>
</ul>
</cfif>
</cfif>
<form action = "cf_popmail.
cfm " method = "post">
<a>Server-ul POP3:</a>
<input type = "Text" name = "server">
<a>Nume (username):</a>
<input type = "Text" name = "username">
<a>Parola:</a>
<input type = "password" name = "pwd">
<input type = "Submit" name = "Citeşte headere">
</form>
Evident, aici avem de-a face doar cu o parte din lucrurile care se pot face,
pentru că interacţiunea CFML-POP3 este completă - puteţi trimite, primi şi şterge
mesaje HTML/text-only, cu sau fără attachement-uri.
Mai întâi, verificăm dacă a fost definit un server <cfif IsDefined("form.server")>
şi avem grijă ca numele de utilizator (username) şi parola (password) să fie
definite <cfif form.server is not "" and form.username is not "">. Dacă
nu, i le cerem utilizatorului printr-un formular (form).
Aici am demonstrat doar cum pot fi citite header-ele mesajelor. De aceea, am
folosit:
<cfpop server = "#server#" username
= #UserName#
password = #pwd#
action = "GETHEADERONLY"
name = "GetHeaders">
secvenţă care cere server-ului să întoarcă
doar header-ele mesajelor action = "GETHEADERONLY "name =
"GetHeaders">. Folosindu-ne de:
<cfoutput query = "GetHeaders">
<li>Nr.: #currentRow#: De la: #From# Subiect: #Subject#
programul nostru va numerota mesajele (astfel încât să le putem afişa ca într-un
tabel, pe linii), şi apoi va afişa de unde au venit şi subiectul lor.
Resurse
Vă recomand documentaţia Macromedia, care se poate descărca gratis de pe situl
www.macromedia.com,
şi este scrisă excelent (ca şi cea pentru ActionScript, fiind ceva caracteristic
Macromedia).
DevNet secţiunea ColdFusion conţine o serie de articole
organizate pe mai mult de 20 de categorii, printre care: configurare, CFML,
integrarea cu alte produse, baze de date, java/JSP, servicii web şi XML / XSLT.
Forumul oficial ColdFusion
http://www.macromedia.com/devnet/mx/coldfusion/
ColdFusion Development Center
http://webforums.macromedia.com/coldfusion/
Acestea fiind zise, mult noroc şi happy coding!
|