| 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: 12 let
|
|||
0