Autor | Zpráva | ||
---|---|---|---|
IrisCZ Profil |
#1 · Zasláno: 30. 12. 2013, 16:49:36
Ahoj. Potřeboval jsem vytvořit jednoduchý kontaktní formulář na plánované stránky. Problémem je, že skript, který jsem pro něj napsal, nefunguje a nemůžu v něm najít žádnou chybu. Mail() jako takový funguje, to mám odzkoušené. Netuší někdo, kde je chyba? (rád bych se vyhnul použití nějakého cizího skriptu typu simplemail).
<?php if(isset($_POST['odeslat'])){ if($_POST['jmeno']!="" AND $_POST['email']!="" AND $_POST['sluzby']!="" AND $_POST['zprava']!=""){ $email='xxx@gmail.com'; $jmeno=$_POST['jmeno']; $predmet="Email od - " . $jmeno; $adresat=$_POST['email']; $telefon=$_POST['telefon']; $sluzby=$_POST['sluzby']; $hlavicky="Od: " . $jmeno . "\n" . "E-mail: " . $adresat . "\n" . "Telefon: " . $telefon . "\n" . "Požadované služby: " . $sluzby . "\n"; $zprava=$_POST['zprava']; mail($email,$predmet,$zprava,$hlavicky); } else { echo "Nevyplnil/a jste všechny povinné položky (označené hvězdičkou)!"; } } ?> |
||
Fisir Profil |
#2 · Zasláno: 30. 12. 2013, 16:54:18
Reaguji na IrisCZa:
Mně se nezdají hlavičky, vypadají dost nestandardně. Zkus to poslat bez nich. |
||
IrisCZ Profil |
#3 · Zasláno: 30. 12. 2013, 16:56:04
http://cz1.php.net/function.mail
Zde jsou normálně popsané. Zkusil jsem je vymazat, ale nepomohlo to. |
||
Jan Tvrdík Profil |
#4 · Zasláno: 30. 12. 2013, 16:57:31
IrisCZ:
Na základě čeho se domníváš, že ten skript nefunguje? Vypisuje nějakou chybu? |
||
IrisCZ Profil |
#5 · Zasláno: 30. 12. 2013, 17:00:26
Neposílá emaily, chyby se žádné neobjevují.
|
||
Fisir Profil |
#6 · Zasláno: 30. 12. 2013, 17:01:36
Reaguji na IrisCZa:
Podívej se na mail() neodesílá na gmail |
||
Joker Profil |
#7 · Zasláno: 30. 12. 2013, 17:10:09
IrisCZ:
„Zde jsou normálně popsané.“ Kde se na té stránce píše, že by pro e-maily byly definované hlavičky „od“, „E-mail“, „Telefon“ a „Požadované služby“? Třeba „Požadované služby“ není ani platný název hlavičky, protože název hlavičky může obsahovat jen znaky ASCII 33-126. A i hodnota hlavičky může obsahovat jen US-ASCII znaky. Dále ještě viz právě ta odkázaná manuálová stránka, každý e-mail musí obsahovat hlavičku „from“. Může být pravda nastavená výchozí hodnota v php.ini (což se taky píše na té manuálové stránce), ale pokud není a ta hlavička není ani u e-mailu, zprávy se neodešlou. |
||
DarkMeni Profil |
#8 · Zasláno: 30. 12. 2013, 17:12:52
IrisCZ:
„Zde jsou normálně popsané.“ Kde? Hlavičky jako "Od:", "E-Mail:", "Požadované služby:" sem tam nenašel (navíc to neodpovídá formátu RFC 2822) Zkus zjistit kam se skript dostane: <?php if(isset($_POST['odeslat'])){ if($_POST['jmeno']!="" AND $_POST['email']!="" AND $_POST['sluzby']!="" AND $_POST['zprava']!=""){ $email='xxx@gmail.com'; $jmeno=$_POST['jmeno']; $predmet="Email od - " . $jmeno; $adresat=$_POST['email']; $telefon=$_POST['telefon']; $sluzby=$_POST['sluzby']; $hlavicky="Od: " . $jmeno . "\n" . "E-mail: " . $adresat . "\n" . "Telefon: " . $telefon . "\n" . "Požadované služby: " . $sluzby . "\n"; $zprava=$_POST['zprava']; echo "Debug: výpis proměnných předávaných funkci mail"; var_dump($mail, $predmet, $zprava, $hlavicky); mail($email,$predmet,$zprava,$hlavicky); } else { echo "Debug: zadané hodnoty neprošly podmínkou"; } } else { echo "Debug: formulář nebyl odeslán"; } ?> Můžeš taky zkusit místo "\n" použít "\r\n" a zakódovat předmět do base64 |
||
IrisCZ Profil |
Omlouvám se, ty hlavičky jsem špatně pochopil. S PHP teorv začínám, takže tomu, co dělám, rozumím jenom napůl. Přepsal jsem to tedy takhle, ale stále to nefunguje. Zkusil jsem to pro jistotu posílat i na seznam.cz
<?php if(isset($_POST['odeslat'])){ if($_POST['jmeno']!="" AND $_POST['email']!="" AND $_POST['sluzby']!="" AND $_POST['zprava']!=""){ $email='xxx@seznam.cz'; $jmeno=$_POST['jmeno']; $predmet="Email od - " . $jmeno; $adresat=$_POST['email']; $telefon=$_POST['telefon']; $sluzby=$_POST['sluzby']; $headers = "From: $email\nMIME-Version: 1.0\nContent-Type: text/plain; charset=utf-8\nContent-Transfer-Encoding: 8bit\n"; $kontakty="Od: " . $jmeno . "\r\n" . "E-mail: " . $adresat . "\r\n" . "Telefon: " . $telefon . "\r\n" . "Požadované služby: " . $sluzby . "\r\n"; $zprava=$_POST['zprava']; $message=$kontakty . $zprava; mail($email,$predmet,$message,$headers); } else { echo "Nevyplnil/a jste všechny povinné položky (označené hvězdičkou)!"; } } ?> |
||
Fisir Profil |
#10 · Zasláno: 30. 12. 2013, 17:19:29
Reaguji na IrisCZa:
Zkus v hlavičkách místo \n použít \r\n .
|
||
IrisCZ Profil |
#11 · Zasláno: 30. 12. 2013, 17:23:07
Také nefunguje.
|
||
breeta Profil |
#12 · Zasláno: 30. 12. 2013, 17:30:23
A kde ti to nefunguje, na localhostu nebo na ostrém serveru? Otestuj si script první na localhostu s test mail ...
|
||
IrisCZ Profil |
#13 · Zasláno: 30. 12. 2013, 17:43:10
Ani na localhostu a ani na serveru to nefunguje.
|
||
breeta Profil |
#14 · Zasláno: 30. 12. 2013, 18:09:28
Na localhostu ti to něco musí zahlásit, zkus odeslat mail bez podmínek a od toho postupuj dál ...
|
||
Fisir Profil |
#15 · Zasláno: 30. 12. 2013, 18:19:01
Reaguji na IrisCZa:
Hm… řešíme tu nic. Problém v samotné funkci mail() není. V současném provedení odesílá i na Gmail. Jsi si jist, že se vykoná první podmínka?
|
||
breeta Profil |
#16 · Zasláno: 31. 12. 2013, 13:09:00
Fisir:
„Hm… řešíme tu nic. Problém v samotné funkci mail()“ Proto jsem mu to napsal ať postupuje od základu a na chybu narazí ... určitě je to v té podmínce |
||
Davex Profil |
#17 · Zasláno: 1. 1. 2014, 12:26:25
IrisCZ:
Jsi si jistý, že se formulář odesílá metodou POST a nepoužíváš třeba nějaký freehosting, kde je odesílání e-mailů vypnuté, zakázané nebo nefunguje? Minimálně o dvou českých bych věděl.
Zkus si poslat z webhostingu testovací e-mail: <?php if (mail("xxx@seznam.cz", "Testovací e-mail na Seznam", "V sobotu večer i v neděli ráno. Projde či neprojde?")) { echo "úspěšně odesláno"; } else { echo "došlo k neznámé chybě"; } |
||
Časová prodleva: 11 let
|
0