Autor | Zpráva | ||
---|---|---|---|
cosimo Profil |
#1 · Zasláno: 4. 3. 2013, 16:48:19
Dobrý den,
pročetl jsem tu vícero diskusí na téma formulářů, a vyzkoušel různé varianty zápisu "From:" (mám podezření na chybičku v syntaxi,) ale žádné řešení se mi neosvědčilo. Ještě uvedu, že formulář fungoval u starého hostingu v pohodě. Teď na novém hostingu po odeslání dat z formuláře se příjemci nezobrazí odesilatel. Vše ostatní funguje správně. Mohl by někdo poradit? Mám podezření na syntaxi zápisu "From:", dávám sem výchozí kód, ještě před marnými pokusy o úpravu. <? function cs_mail ($to, $predmet, $zprava, $head = "") { $predmet = "=?utf-8?B?".base64_encode(autoUTF ($predmet))."?="; $head .= "MIME-Version: 1.0\n"; $head .= "Content-Type: text/plain; charset=\"utf-8\"\n"; $head .= "Content-Transfer-Encoding: base64\n"; $head .= 'From: '. $jmeno . ' <' . $email . '>'. "\n"; $zprava = base64_encode (autoUTF ($zprava)); $stav = mail ($to, $predmet, $zprava, $head); return $stav ? TRUE : FALSE; } $predmet = " * * * Vyplněná objednávka".$_POST['vyplnena_online_objednavka']." * * * "."\n"; $zprava.=" Vyplněná objednávka z online formuláře".$_POST['vyplnena_online_objednavka']." : "."\n"; $zprava.="JMÉNO: ".$_POST['jmeno']."\n"; $zprava.="E-MAIL: ".$_POST['email']."\n"; $zprava.="POZNÁMKA: ".$_POST['poznamka']."\n"; if (cs_mail("příjemce@něco.cz", $predmet, $zprava, "From: " . $email . "\n")) echo "<p>Podařilo se odeslat atd.</p>"; else echo "<p>Nepodařilo se odeslat atd.</p>"; ?> |
||
Joker Profil |
#2 · Zasláno: 4. 3. 2013, 17:03:35
cosimo:
Odkud se vezmou hodnoty $jmeno a $email? Když je dáte vypsat, je v nich něco? |
||
cosimo Profil |
#3 · Zasláno: 4. 3. 2013, 17:11:58
Joker:
Hodnoty jsou <input type='text' ....> z html formuláře. Obě hodnoty se přiřadí a dorazí příjemci - ovšem pouze v těle emailu jako součást $zprava . Nepromítnou se do pole odesilatele. |
||
Joker Profil |
#4 · Zasláno: 4. 3. 2013, 17:17:43
cosimo:
Čili když zkontrolujete nějaký konkrétní běh skriptu, tak v hlavičce zprávy opravdu je něco jako From: jméno<jmeno@example.com> ?
|
||
cosimo Profil |
#5 · Zasláno: 4. 3. 2013, 17:26:58
Aj vaj, jako php laik ani nevím, jak kontrolu běhu scriptu provést, ani tu nemám nainstalovaný Apache a testuju upravené verze opětovným nahráváním na server :( Jestli se to v běhu scriptu skutečně objeví v $head nevím. Ale přiřazení proměnným v řádcích kódu 14 a 15 do $zprava je v pořádku. |
||
donny Profil |
obecne to je nejaké zvláštne, ja by som to upravil takto, pretože tak ako to máš tá funkcia vôbec hodnoty $from a $email nedostáva..
<? function cs_mail ($to, $predmet, $zprava, $from, $email) { $predmet = "=?utf-8?B?".base64_encode(autoUTF ($predmet))."?="; $head .= "MIME-Version: 1.0\n"; $head .= "Content-Type: text/plain; charset=\"utf-8\"\n"; $head .= "Content-Transfer-Encoding: base64\n"; $head .= "From: =?UTF-8?B?".base64_encode("$jmeno")."?=<$email> \r\n"; $zprava = base64_encode (autoUTF ($zprava)); $stav = mail ($to, $predmet, $zprava, $head); return $stav ? TRUE : FALSE; } $predmet = " * * * Vyplněná objednávka".$_POST['vyplnena_online_objednavka']." * * * "."\n"; $zprava.=" Vyplněná objednávka z online formuláře".$_POST['vyplnena_online_objednavka']." : "."\n"; $zprava.="JMÉNO: ".$_POST['jmeno']."\n"; $zprava.="E-MAIL: ".$_POST['email']."\n"; $zprava.="POZNÁMKA: ".$_POST['poznamka']."\n"; if (cs_mail("příjemce@něco.cz", $predmet, $zprava, $_POST['jmeno'] ,$_POST['email'])) echo "<p>Podařilo se odeslat atd.</p>"; else echo "<p>Nepodařilo se odeslat atd.</p>"; ?> cosimo: > Aj vaj, jako php laik ani nevím, jak kontrolu běhu scriptu provést, ani tu nemám nainstalovaný Apache a testuju upravené verze opětovným nahráváním na server :( > Jestli se to v běhu scriptu skutečně objeví v $head nevím. Ale přiřazení proměnným v řádcích kódu 14 a 15 do $zprava je v pořádku. Test či je niečo v premennej ide spraviť jednoduchým výpisom echo pred odosielanie, prípadne dovnútra funkcie, netreba tam hľadať žiadnu zložitosť... |
||
cosimo Profil |
#7 · Zasláno: 4. 3. 2013, 17:41:59
donny:
Zkoušel jsem kód po úpravě – to zpráva pak nedorazí vůbec. |
||
donny Profil |
function cs_mail ($to, $predmet, $zprava, $from, $email) { $predmet = "=?utf-8?B?".base64_encode($predmet)."?="; $head = "MIME-Version: 1.0\r\n"; $head .= "Content-Type: text/html; charset=\"utf-8\"\r\n"; $head .= "Content-Transfer-Encoding: base64\r\n"; $head .= "From: =?UTF-8?B?".base64_encode("$jmeno")."?=<$email> \r\n"; $zprava = base64_encode($zprava); $stav = mail ($to, $predmet, $zprava, $head); return $stav ? TRUE : FALSE; } Pôvodne som si nevšimol že tam máš použitú funkciu autoUTF od Davida Grudla, ktorú ale v kóde nemáš definovanú!! Vyhoď to odtiaľ tak ako som to napísal hore alebo si tú funkciu vyhľadaj vo FAQ! |
||
cosimo Profil |
#9 · Zasláno: 4. 3. 2013, 18:19:47 · Upravil/a: cosimo
donny:
Velké díky a zároveň omluva Donnymu. Email se zpožděním nakonec dorazil, v políčku odesilatel je i e-mail a to je skvělé. (Jméno tam figurovat nutně nemusí.) donny: (autoUTF jsem tam měl - jen jsem zde zestručnil výpis s vědomím, že v ní chyba není) |
||
cosimo Profil |
#10 · Zasláno: 6. 3. 2013, 14:27:54
Jásal jsem předčasně, nefachčilo to v Outlook expess, co klient používá, odesilatel se tam objevoval jako From: "=?UTF-8?B??=" <"">.
Vyřešil jsem to zjednodušením zápisu "From:", kde nám pro naše účely v poli úplně postačuje email odesilatele: $head .= 'From: <'.$email.">\n"; Pak jsem to ještě pojistil novým řádkem kódu, ale vše funguje i bez něho: $email = $_POST['email']; |
||
Časová prodleva: 11 let
|
0