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