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 = "[email protected]"
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 = "[email protected]"
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 = "[email protected]"
To = "[email protected]"
Subject = "Corecturi">
<cfmailparam name = "Reply-To" value = "[email protected]">
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 = "[email protected]">, 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!
|