Věc, která se určitě hodí. E-mailový formulář. Slouží ke komunikaci uživatele a majitele webu aniž by majitel webu musel zveřejňovat svůj e-mail. A jak jej vytvořit? To si ukážeme v dnešním článku.
Co potřebujeme?
Pustíme se rovnou do práce. Můžete se také podívat na živou ukázku, jak takový e-mailový formulář vypadá. Jediné co potřebujete je podpora PHP u vašeho hostingu. Pak jen stačí nahrát soubory na web a máte hotovo. Pro začátečníky bych rád upozornil, že všechny tyto soubory musí mít koncovku .php
jinak vám e-mailový formulář nebude fungovat.
E-mailový formulář – HTML kód
E-mailový formulář je rozdělen na 2 soubory. První (index.php), který určuje vzhled a druhý (poslat.php), který zpracovává odeslané informace a doručí váš e-mail.
index.php (vložte kamkoli mezi tagy <body> a </body>)
<table style="height:100%;" width="100%" cellSpacing="0" cellPadding="0" border="0">
<tr><td align="center" valign="top">
<form action="poslat.php" method="post">
<table width="200" border="0" class="text">
<tr><td width="50"><strong>J</strong>méno:</td><td><input name="jmeno" accesskey="j" type="text"/></td></tr>
<tr><td width="50"><strong>E</strong>mail:</td><td><input name="email" accesskey="e" type="text"/></td></tr>
<tr><td width="50"><strong>W</strong>eb:</td><td><input name="web" accesskey="w" type="text" value="http://"/></td></tr>
<tr><td width="50" valign="top"><strong>T</strong>ext:</td><td><textarea name="text" accesskey="t" rows="5" cols="25"></textarea></td></tr>
<tr><td colspan="2" align="center"><input type="submit" class="button" value="Odeslat"/> <input type="reset" value="Vymazat"/></td></tr>
</table>
</form>
</td></tr>
</table>
poslat.php (kompletní zdrojový kód)
<?php
$to = "vas@email.cz";
$extra = "From: ".$_POST['email']."\r\nReply-To: ".$_POST['email']."\r\n";
$subject = "Vzkaz od ".$_POST['jmeno']."";
$mess = "Jméno: ".$_POST['jmeno']."\nEmail: ".$_POST['email']."\nWeb: ".$_POST['web']."\nText:\n".$_POST['text']."";
mail ($to, $subject, $mess, $extra);
?>
<html><head>
<meta http-equiv="refresh" content="0; url=index.php">
<title>Přesměrování...</title>
</head><body></body></html>
Existuje mnoho variant vytvoření e-mailového formuláře. Vybral jsem ten nejjednodušší. Můžete použít tento způsob nebo si jej kompletně přetvořit podle svého. To už je na vás…
{ Komentáře k článku }
Ahoj,
už se dlouho trápím s posíláním formulářů a ajta najednou takový pěkný příklad. Díky, Ivan.
Ahoj,
děkuji Vám. Jsem rád, když můžu pomáhat lidem.
Pokud budete mít zájem plánuji napsat článek pro posílání e-mailů s anti-spamovou ochranou a s možností napsaní volitelného E-mailu doručitele. Takže z tohoto formuláře budete moci psát komu budete chtít.
Pokud budete mít zájem můžete mi napsat na můj E-mail, nebo počkat zhruba do března kdy bude na tomto blogu.
Ahoj,
děkuji za rady, jsem zoufalý začátečník a tohle je pěkný a jasný způsob, ale pořád mi nějak nechce odesílat proměnné… může to být nastavením serveru? na mail mi přijdou vždy jen nadpisy… :-(.
Chápu, že ne každý má čas hledat hodiny vhodný formulář. A tak se snažím psát všechno jasně a stručně. Žádné zbytečně řeči kolem. Co se týče tvého problému. Zkus více mailů.
Vyzkoušej poslat mail na Gmail, Seznam… Pokud bude stejný problém všude. Bude chyba na straně serveru. Jestli si nebudete vědět rady vyzkoušejte novější způsob. Je popsán v mém novém článku, který se jmenuje „E-mailový formulář s antispamovou ochranou“.
Ahoj. Použil jsem tvůj email. form., ale nejde mi. Odešlu to a na email nic nepřijde. Takže asi použiji svůj vlastni :D… ale zajímalo by mě proč to nejde.
Formulář je funkční. Zkoušel jsem jej. Odesílá maily spolehlivě. Testoval jsem Gmail, Centrum a Seznam. Chyba bude s největší pravděpodobnosti na tvé straně. Může být i na straně serveru, ale o tom pochybuji.
Ahoj,
dakujem tiez za dobre rady, ako zena sa v tom teda moc nevyznam :-) ale urobila som vsetko ako si povedal, e-mail prisiel, ale tiez len nadpisy bez textu, ktory som napisala. Ten dokument poslat.php je docela kratky, ked som si ho tak citala v notepade, myslis, ze by si nam laikom mohol vysvetlit, co vlastne ktory prikaz znamena?
Dakujem a prajem vsetko dobre.
Ahoj,
znova jsem vyzkoušel odeslat mail z testovací stránky, ale všechno šlo. Asi půjde o špatné nastavení u tebe na serveru. Pokud rozbalíš balík na web – měl by hned jít. Těžko říct, proč ti to nejde.
Jak koukám, druhý formulář ti již jde, takže hodně štěstí.
Jakou jsem mohl udělat chybu? V řádku $to = „vas@email.cz“; jsem jen změnil email na svůj a soubor uložil. Cely skript pak „funguje“ tak, že mi na můj mail chodí čtyři pod sebou napsaná slova… Jméno: Email: Web: Text:
Takovou funkci to také má. V mailů to vypíše jméno, mail a další. Pokud to chceš jinak, budeš si to muset předělat v souboru sám. Čerpat můžeš například v článku E-mailový formulář s antispamovou ochranou zde na webu.
Ahoj, pěkný návod. Mi všechno funguje až na české znaky. Prostě diakritika nejede. Mail přijde a místo znaků s diakritikou jsou patvary. Nevíš čím to je?
Špatným kódováním. Tuším, že na Seznam se to odesílá bez háčků a čárek.
Super návod, ale ešte by som dodal do formulára:
Takto sa dá zistiť, ak by ste náhodou potrebovali IP odosielateľa.
Když to přidám tak mi na mail přijde i číslo ip adresy odesílatele? Díky.
Zřejmě ano, za zkoušku nic nedáte :). Zakomponovat formulář do stránek samoz. jde. Prostě kód z poslat.php vložte tam, kde chcete formulář zobrazovat. Je to na stránky psané ručně… pokud používáte nějaký redakční systém tak bude určitě lepší používat nějaký plugin.
Dobrý den, chci se zeptat, jestli tento formulář jde zakomponovat do html stránek a případně jak to udělat? děkuji za odpověď.
Dobrý den,
mám problém, který akutně potřebuji vyřešit, nejsem v PHP expert, tak Vás prosím o přiměřené reakce.
Potřebuji vložit tento emailový formulář:
Odeslat.php:
V čem je problém, když po odeslání formuláře vyjede samotný script místo odeslání? Děkuji za odpověď.
Dobrý den,
je to už dlouho, co jsem psal něco v PHP a tak Vás raději pošlu dále. Zkuste kupříkladu napsat na JPW (je třeba registrace).
Možná jen v rychlosti rada – máte určitě ten odesílací kód obalen na začátku
< ?php
a na jeho konci?>
?To je jednoduché. Buď stránku nemáte uloženou jako *.php (kde * je název) nebo script nemáte v
< ?php ?>
.Chtěl bych se zeptat, když odešlu email proč se mi objevuje jenom:
Jméno:
Email:
Web:
Text:
a není to vyplněný? Děkuji.
Asi tě nepotěším, ale nemám tušení. Je to už několik let, co jsem tenhle formulář dělal a jak si teď zkouším ukázku, která je nahraná tady na weblogu… taky nefunguje. Přitom jsem s ní nic nedělal a jsem si jistý, že fungovala.
Zkus se s tímhle kódem obrátit na nějaké fórum a možná chybu najdou. Víc ti bohužel neporadím. Pokud zjistíš čím to je, zkus se ozvat.
Funguje to ;).
Paráda. Zkusím tu chybu zde opravit. Aby vše běželo jak má. Díky, že jsi se stavil a hodil sem odkaz…i pro ostatní čtenáře. Teď už mailový formulář problémy dělat nebude.
Emailový formulář je opět plně funkční! Byla opravena chyba kdy přicházel formulář prázdný (nevyplněný). Upravil jsem živou ukázku, kompletní soubor ke stažení a samozřejmě kód v článku. Dále jsem trochu upravil text a titulek článku.
Takže nyní by již mělo být vše funkční a v pořádku. I tak doporučuji poohlédnout se po lepším formuláři s antispamovou ochranou.
Komentáře jsou pro tento článek již uzavřeny.