Formulß° na mail

jak si nechat ze strßnek posφlat zprßvy

V²hody mailovacφho formulß°e - Mo╛nosti odesφlßnφ - Action="mailto:..." - ServerovΘ odesφlßnφ - P°es cizφ servery - Blueboard - Mailform - Vlastnφ odesφlacφ skript - JinΘ zp∙soby - Co nejde

V²hody mailovacφho formulß°e

Na internetov²ch strßnkßch je velmi cen∞na jejich interaktivnost -- kontakt se Φtenß°em. V∞t╣in∞ lidφ staΦφ ke ╣t∞stφ, kdy╛ jim Φtenß°i strßnek pφ╣ou e-mailem. Proto je zvykem umis╗ovat na strßnky e-mailovou adresu ve form∞ odkazu, na kter² kdy╛ se klikne, tak se otev°e okno mailovacφho programu s nastavenou adresou. Formulß°, jeho╛ v²sledky p°ijdou do mailu, d∞lß na prvnφ pohled to samΘ. Jsou v╣ak nejmΘn∞ t°i d∙vody, proΦ si dßt okΘnko pro reakce p°φmo na strßnku: 

Konstrukce formulß°e

Dejme tomu, ╛e budu chtφt mφt formulß° se t°emi polφΦky: 

VṠmail:
P°edm∞t:
Zprßva:

Mß tento k≤d: 

<form action="?????????" method="post">
VṠmail: <input name="mail_odesilatele" size="20"><br>
P°edm∞t: <input name="predmet" size="20"><br>
Zprßva: <textarea name="zprava" rows="4" cols="30"></textarea><br>
<input type="submit" value="Odeslat">
</form>

To je zatφm normßlnφ HTML zßpis formulß°e: ka╛dΘ polφΦko musφ mφt jednoznaΦnΘ name (dosti libovolnΘ), metoda odeslßnφ method="post" je vhodn∞j╣φ ne╛ get, proto╛e se bude p°enß╣et v∞t╣φ mno╛stvφ dat. Zatφm by formulß° ale nefungoval, proto╛e nemß sprßvn∞ nastaven² atribut action, kter² °φkß, jak se formulß° bude odesφlat. 

Mo╛nosti odesφlßnφ

Zajistit odeslßnφ formulß°e je u╛ t∞╛╣φ. KlφΦov² je p°itom zp∙sob, kter²m se to bude odesφlat. Existuje  mnoho mo╛nostφ, kterΘ se li╣φ pracnostφ a spolehlivostφ:

R∙znΘ m²ty tvrdφ, ╛e se maily dajφ odesφlat tΘ╛ JavaScriptem nebo javov²m appletem, jsou to ale opravdu jenom m²ty (alespo≥ podle m²ch zku╣enostφ). 

Action="mailto:..."

HTML u╛ v sob∞ obsahuje zp∙sob, kter²m se mß vypln∞n² formulß° odeslat na mail adresa@prijemce

<form action="mailto:adresa@prijemce" method="post" enctype="text/plain">
VṠmail: <input name="mail_odesilatele" size="20"><br>
P°edm∞t: <input name="subject" size="20"><br>
Zprßva: <textarea name="body" rows="4" cols="30"></textarea><br>
<input type="submit" value="Odeslat">
</form>

Action="mailto..." zp∙sobφ, ╛e se prohlφ╛eΦ p°i odesφlßnφ formulß°e pokusφ kontaktovat mailovacφ program na Φtenß°ov∞ poΦφtaΦi a p°edat mu obsah formulß°e k odeslßnφ na adresu, kterß je uvedena za "mailto:". 

Atribut enctype nastavuje zp∙sob p°edßvßnφ obsahu: nejvφce se mi osv∞dΦil text/plain. Kdyby se tam enctype nezadßvalo, mail se ode╣le prßzdn² s p°φlohou postdata.att, ve kterΘ je zak≤dovan² obsah formulß°e. Nic hezkΘho na Φtenφ, nap°.:

mail_odesilatele=nikdo@nidke&subject=p%F8edm%ECt&body=Toto+je+zpr%E1va

Pokud se ale zadß text/plain, tak se alespo≥ nepokazφ Φe╣tina a zachovajφ se °ßdkovΘ zlomy.

KonkrΘtnφ zp∙sob odeslßnφ zßvisφ na prohlφ╛eΦi a mailovΘm programu. Nap°. Internet Explorer do p°edm∞tu dßvß text: "Formulß° vystaven² z aplikace MSIE". K odeslßnφ se pak pou╛φvß nejΦast∞ji program Outlook.

ProΦ je to nespolehlivΘ 

Mail z formulß°e s action="mailto..." Φasto nenajde adresßta. ProblΘmy spoΦφvajφ v nastavenφ poΦφtaΦe u Φtenß°e. Mo╛nΘ d∙vody: 

Navφc, kdy╛ u╛ se formulß° poda°φ odeslat, je jako odesilatel uveden majitel ·Φtu, nikoliv skuteΦn² odesilatel. P°φjemce (tedy jß) odpovφdß n∞komu, kdo v∙bec nevφ, co se d∞je. To je poslednφ d∙vod, proΦ klientskΘ odesφlßnφ doporuΦuji nepou╛φvat a zkusit rad∞ji zp∙soby serverovΘ.  

ServerovΘ odesφlßnφ

Action se namφ°φ na n∞jakou aktivnφ strßnku (nap°. ASP nebo PHP skript), kterß ud∞lß dv∞ v∞ci: 

  1. Ode╣le mail
  2. Do prohlφ╛eΦe ode╣le strßnku, nejΦast∞ji potvrzenφ odeslßnφ

Podle mo╛nostφ va╣eho serveru

P°es cizφ servery

Znßm dv∞ ΦeskΘ slu╛by, kterΘ umo╛≥ujφ odesφlßnφ mail∙ z formulß°∙: Maiform a Blueboard. Je t°eba se registrovat, nechat si vygenerovat k≤d formulß°e a ten umφstit do svΘ strßnky. Formulß° se bude odesφlat na vzdßlen² server, kter² ode╣le mail a zobrazφ strßnku s potvrzujφcφ strßnkou.

Zatφmco na Bluebordu je registrace a pou╛itφ trochu jednodu╣╣φ, Mailform nabφzφ podle mΘho nßzoru o n∞co v∞t╣φ mo╛nosti.

www.blueboard.czAnkety, nßv╣t∞vnφ knihy, mailformy, poΦφtadla a CHAT pro Vß╣ web

Na hlavnφ strßnce se zvolφ registrace, pak se vyplnφ formulß°. Odesφlßnφ mail∙ z formulß°∙ se v terminologii tohoto serveru jmenuje "Blueform". Aby to fungovalo, musφ ze v nastavenφ Blueformu zadat e-mail, na kter² se mß formulß° odesφlat. Zßrove≥ se mohou nastavit barvy, to nenφ podstatnΘ. Pak staΦφ nechat si vygenerovat k≤d a umφstit ho do strßnek. 

K≤d Blueformu je umφst∞n v tagu <iframe>, do kterΘho se naΦφtß formulß° ze serveru. Vzhled a funkci formulß°e tedy (krom∞ barev) nenφ mo╛nΘ nijak podstatn∞ ovlivnit (leda byste si ho zkopφrovali a pak si ud∞lali sv∙j parazitnφ formulß° zm∞nou action). Na╣t∞stφ mß formulß° velmi modernφ vzhled a hezky pou╛φvß styly. ZajφmavΘ je, ╛e formulß° je naΦφtßn ze serveru, i kdy╛ nenφ ╛ßdn² mail odesφlßn.

Formulß° obsahuje pouze dv∞ polφΦka, co╛ v∞t╣inou staΦφ: zadßnφ mailu odesφlatele a text zprßvy. P°φchozφ zprßva mß pak p°edm∞t (subject) "BlueForm Message", kter² nelze nijak zm∞nit. Jako odesφlatel je uveden mail, kter² u╛ivatel zadß do okΘnka mail. Zprßva dorazφ bez jak²chkoli balastnφch text∙. Blueboard vyu╛φvß pro odesφlßnφ PHP (co╛ nenφ podstatnΘ). 

Server Blueboard.cz je zajφmav² i tφm, ╛e krom∞ formulß°e do mailu poskytuje i nßv╣t∞vnφ knihu, ankety, poΦitadlo, chat a jinΘ aktivnφ prvky.

www.mailform.cz MailForm

Maily p°es Mailform doporuΦuji vyu╛φvat, pokud se nespokojφte s mailem odesφlatele a prostou zprßvou, ale pot°ebujete od u╛ivatele zφskat dal╣φ strukturovanΘ ·daje. Formulß° si toti╛ v tomto p°φpad∞ stavφte sami, server °e╣φ pouze odesφlßnφ. Do formulß°e si m∙╛ete umφstit dal╣φ libovolnß pojmenovanß pole (nejΦast∞ji tagem <input>); vypln∞n² obsah t∞chto polφ p°ijde do mailu. V nastavenφ se dß zvolit mnoho zp∙sob∙ vzhledu a formovßnφ do╣lΘ zprßvy, r∙znΘ p°φjemce, p°edm∞t zprßvy a dal╣φ vymo╛enosti.

Registrace na mailform.cz je naprosto typickß, pouze se p°i nφ zadßvß i adresa strßnky, kde bude formulß° umφst∞n. Podle m²ch zku╣enostφ tam staΦφ zadat p°ibli╛nou adresu, to jest domΘna.cz. Pak je vygenerovßn formulß°, kter² je t°eba naplnit sv²mi formulß°ov²mi poli (nejΦast∞ji intputy). 

<form method="POST" action="http://www.mailform.cz/form.asp">
<input type="hidden" name="mailform_userid" value="9427">
...
<input type="submit">
</form>

Na mφsto t°φ teΦek je nutno doplnit vlastnφ formulß°ovß pole, nap°:

P°edm∞t: <input type="text" name="subject"><br>
Zprßva: <textarea name="Zprava"></textarea><br>
VṠmail: <input name="Mail">

K celΘmu systΘmu je velmi obsßhlß nßpov∞da. Nap°φklad se tam dß nastavit, aby se jako p°edm∞t zadala hodnota zadanß do polφΦka subject.

Jedinß drobnß nev²hoda je, ╛e se v do╣lΘ po╣t∞ jako odesφlatel ukazuje "MailForm robot", p°φpadnΘ odpov∞di na╣t∞stφ dochßzejφ na adresu, kterou u╛ivatel zadß do polφΦka s name RefererEmail, Email Φi Mail.

Skript od MaKr

Kamarßd MaKr napsal a na svΘm serveru rozb∞hal skript, kter² umo╛≥uje odesφlßnφ mail∙ z jednoduchΘho formulß°e bez nutnosti registrace. Zm∞≥te si ·daje a zkuste to.

<FORM action="http://mgs.web3.cz/html4all/mail.php" method="post">
<!-- Tyto dva parametry musφ b²t skuteΦnΘ a sprßvnΘ!! !-->
<INPUT type="hidden" name="komu" value="torp@seznam.cz"><!-- adresßt -->
<INPUT type="hidden" name="rpath" value="torp@seznam.cz"><!-- odesilatel -->
<!-- absolutnφ adresa strßnky, kam se mß p°ejφt po odeslanφ !-->
<INPUT type="hidden" name="goto" value="new/email-od.htm">

P°edm∞t: <INPUT type="text" name="p" value=""><BR>
Text: <TEXTAREA cols=50 rows=5 name="t"></TEXTAREA><BR>
VṠemail:<INPUT type="text" name="od" value=""><BR>
<INPUT type="submit" name="send" value="ODESLAT">
</FORM>

Skript od Technika

Podobnou funkΦnost s nastavenφm odesφlatele i p°φjemce nabφzφ mailovacφ formulß°, kter² jsem dostal mailem.

Vlastnφ odesφlacφ skript

Mßte-li mo╛nost spou╣t∞t na serveru skripty a server umφ odesφlat maily, m∙╛ete si napsat vlastnφ odesφlacφ aplikaci. Pak staΦφ action ve form namφ°it na soubor s tφm vytvo°en²m skriptem. Jazyk skriptu zßvisφ na tom, co vß╣ server zvlßdß: m∙╛e to b²t obyΦejnΘ CGI, ASP nebo PHP. Jß pou╛φvßm PHP.

Mßm dva soubory. V prvnφm je jenom formulß° namφ°en² na druh² php skript:

<form action="druhy.php">
VṠmail: <input name="mail_odesilatele"><br>
P°edm∞t: <input name="predmet"><br>
Zprßva: <textarea name="zprava"></textarea><br>
<input type=submit value="Odeslat">
</form>

Soubor druhy.php vypadß takto:

<? if ( Mail("moje@adresa", $predmet, $zprava, "From: " . $mail_odesilatele) )
echo "Mail byl odeslßn";
else echo "Mail se nepoda°ilo odeslat"; ?>

V praxi se skript samoz°ejm∞ obohacuje o dal╣φ funkce (nap°. se neodesφlß prßzdn² formulß°). V tomto p°φkladu je pouze test, zda se funkce Mail() provedla nebo ne. V╣imn∞te si, ╛e se ve skriptu pou╛φvajφ prom∞nnΘ, kterΘ se jmenujφ stejn∞ jako polφΦka ve formulß°i. Do funkce je p°idßna hlaviΦka "From:", kterß nastavuje odesφlatele. Existuje vφce takov²ch hlaviΦek, nap°. "Bcc:" pro skrytΘ kopie.

Syntaxe PHP funkce Mail():

Mail("adresa@p°φjemce", "P°edm∞t", "Zprßva", "nepovinnΘ dal╣φ hlaviΦky")

Pokud jsou ·daje v prom∞nn²ch, neu╛φvß se uvozovek. Je-li t°eba uvΘst vφce p°φjemc∙, odd∞lujφ se jejich jmΘna Φßrkami. ╪ßdkov² zlom se d∞lß escape sekvencφ "\n".

ProblΘmy nastavenφ serveru

Pokud mßte na serveru povoleny PHP nebo ASP skripty, nemusφ to automaticky znamenat, ╛e bude fungovat odesφlßnφ mail∙. PHP ani ASP toti╛ samy od sebe odesφlat maily nedokß╛ou, ale vyu╛φvajφ jin²ch program∙. Na Linuxu/Unixu b²vß funkΦnφ program mail, tam pak m∙╛e b²t problΘm jenom s prßvy (freeweby s podporou PHP mφvajφ obΦas mail zakßzan² nebo omezen²). ASP na windowsovsk²ch serverech pot°ebujφ instanci n∞jakΘho com objektu, kter² umφ maily posφlat (nevφm p°esn∞ jakΘho). PHP na windows pot°ebujφ v nastavenφ adresu sp°φzn∞nΘho SMTP serveru, kter² odeslan² mail p°ijme a po╣le ho dßl.

JinΘ zp∙soby serverovΘho odeslßnφ

V╣echno zßle╛φ na poskytovateli webovΘho prostoru, resp. na nastavenφ serveru.

Nap°φklad jsou-li na serveru nainstalovßny FrontPage extensions, m∙╛e se pr² ve FrontPage formulß°i nastavit odesφlßnφ do mailu, ╛el, v∞t╣inou to nefunguje.

N∞kterΘ freeweby obsahujφ utilitu pro odesφlßnφ formulß°e na mail. KonkrΘtn∞ jsem si toho v╣iml na www.sweb.cz. Utilita se nastavuje pomocφ konfiguraΦnφho souboru. Nepochybuji o tom, ╛e podobnou mo╛nost obsahujφ i n∞kterΘ jinΘ freeweby. 

P°ed n∞kolika lety bylo nejΦast∞j╣φm zp∙sobem odesφlßnφ formulß°e na mail vyu╛itφ cgi skriptu mailform.cgi, kter² se dodnes zachoval na n∞kter²ch star╣φch serverech a p°i tro╣e ╣t∞stφ jej lze pou╛φt.

Co nejde

Neznßm ╛ßdn² jednoduch² zp∙sob, jak z formulß°e odesφlat maily s p°φlohami. 

Z principu neexistuje ╛ßdn² zp∙sob, jak bezpeΦn∞ identifikovat skuteΦnΘho odesilatele zprßvy, tzn. u╛ivatelem uveden² mail m∙╛e b²t fale╣n². 

Vizte tΘ╛: ┌vod do formulß°∙ v HTML, Formulß°e v HTML, MailovΘ adresy v HTML strßnkßch, Jak zaΦφt s PHP, Slu╛by vzdßlen²ch server∙
On-line odkazy: www.blueboard.cz, www.mailform.cz 
OdflßknutΘ p°φklady: formulß° p°es Blueboard, formulß° p°es Mailform, prvnφ Φßst mΘho skriptu odesφlanΘho na PHP

o tvorb∞, ·dr╛b∞ a zlep╣ovßnφ internetov²ch strßnek

Pφ╣e Yuh∙, dusan@pc-slany.cz

Hledßnφ:

Jak psßt web: www.jakpsatweb.cz

Pφ╣e Yuh∙: http://dusan.pc-slany.cz, mail: dusan@pc-slany.cz

Poslednφ aktualizace 10.12.2003