php mail - nejdou české znaky

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

djarchee@gmail.com
nováček
Příspěvky: 4
Registrován: září 13
Pohlaví: Muž
Stav:
Offline

php mail - nejdou české znaky

Příspěvekod djarchee@gmail.com » 27 zář 2013 09:26

Zdravím Vás, vím že mi řeknete, že se to tady už řešilo, věřte, že jsem prolezl hodně témat, abych našel odpověď, ale jsem spíše bastlič a ani jedna odpověď mi nepomohla, protože jsem nepřišel na to, jak to upravit.

No zkrátka - mám na webu formulář pro odesílání zprávy na email:

Kód: Vybrat vše

<form action="engine.php" method="post">
<input class="poptavky_input" name="name" placeholder="Jméno *" /><br/>
<input class="poptavky_input" name="email" placeholder="E-mail *" /><br/>
<input class="poptavky_input" name="spam" placeholder="Opište číslo z obrázku *"/> <img src="http://plasterhlinsko.cz/TEST/img/captcha.jpg" /><br/>
<textarea class="poptavky_text" name="zprava" placeholder="Text zprávy *"></textarea><br/>
<input type="submit" value="Odeslat"/> <p class="poptavky_p">Položky označené hvězdičkou (*) je nutno vyplnit. </p>
</form>


Jenomže když to pošlu, v Outlooku to v obsahu zprávy píše nesmysly. (Zvláštní že hlavička diakritiku má)
Pokud si ten email čtu přes webové rozhraní gmailu - text emailu se zobrazí správně s diakritikou - bohužel email musím příjmat do Outlooku, takže mi to tak nestačí.

tady je obsah souboru engine.php

Kód: Vybrat vše

<?
$predmet = $_POST['predmet'];
$email = $_POST['email'];
$name = $_POST['name'];
$spam = $_POST['spam'];
$zprava = $_POST['zprava'];


if ($email!="" and  $name!="" and $zprava!="" and $spam=="1975") // Pokud není políčko předmět, mail, zprava prázné a spam se rovná (==) 1975, pokračuj v kódu
{
Mail("djarchee@gmail.com", "POPTÁVKA", "ODESILATEL: $name, ZPRÁVA: ". $zprava, "From: " . $email );
echo "<p><strong>E-mail byl úspěšně odeslán. Děkujeme za Váš zájem.</strong>.</p>";
}
else
{
echo "<p>Váš e-mail se <strong>nepodařilo odeslat</strong>. Opište prosím <b>číslo z obrázku</b> a vyplňtě chybějící údaje.</p>";
}
?>


Oba soubory mám v kodování UTF-8.
Mohli byste prosím poradit co s tím?

A ještě mám jeden dotaz, při úspěšném odeslání emailu se vypíše text na bílou stránku a uživatel potom musí dát "zpět"
co mám dát místo tohoto:

Kód: Vybrat vše

echo "<p><strong>E-mail byl úspěšně odeslán. Děkujeme za Váš zájem.</strong>.</p>";

aby se zobrazilo pouze jen nějaké upozornění - tabulka jako ve windows, která stačí odkliknout.. ?

Předem mockrát děkuji za radu!!
Archee

Reklama
Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: php mail - nejdou české znaky

Příspěvekod CZechBoY » 27 zář 2013 12:52

Zdravím,
tohle téma tu dlouho nebylo, nicméně se to tu minimálně 5× řešilo.
Stačí do kódu přidat hlavičky, které obsahují informaci (nejen) o kódování emailu.


Takže tvůj nový php kód bude

Kód: Vybrat vše

<?php
$predmet = trim($_POST['predmet']);   // k čemu?
$email = trim($_POST['email']);
$name = trim($_POST['name']);
$spam = $_POST['spam'];
$zprava = trim($_POST['zprava']);

if (!empty($email) and  !empty($name) and !empty($zprava) and $spam=="1975") // Pokud není políčko předmět, mail, zprava prázdné a spam se rovná (==) 1975, pokračuj v kódu
{
  $headers = "MIME-Version: 1.0\n";
  $headers .= "Content-Type: text/plain; charset=UTF-8\n";
  $headers .= "Content-Transfer-Encoding: 8bit\n";
  $headers .= "From: " . $email . "\n";

  mail("djarchee@gmail.com", '=?UTF-8?B?' . base64_encode('POPTÁVKA') . '?=', "ODESÍLATEL: $name, ZPRÁVA: " . $zprava, $headers);
  echo "<p><strong>E-mail byl úspěšně odeslán. Děkujeme za Váš zájem.</strong>.</p>";
}
else
{
  echo "<p>Váš e-mail se <strong>nepodařilo odeslat</strong>. Opište prosím <b>číslo z obrázku</b> a vyplňtě chybějící údaje.</p>";
}
?>
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW

djarchee@gmail.com
nováček
Příspěvky: 4
Registrován: září 13
Pohlaví: Muž
Stav:
Offline

Re: php mail - nejdou české znaky

Příspěvekod djarchee@gmail.com » 27 zář 2013 19:40

Mockrát děkuji! To bylo přesně ono! :) s těmi hlavičkami jsem to četl, ale nevěděl jsem jak to dát do kupy :/ jsem ještě máslo no :-D

Ještě jsem se chtěl zeptat, šlo by místo toho "echo" na vypsání textu do nové stránky dát jen nějakou "windowsovskou" tabulku, nebo něco podobného,
aby to uživatel jen potvrdil OK, aby nebylo nutné vracet se zpět na předchozí stránku?

Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: php mail - nejdou české znaky

Příspěvekod CZechBoY » 27 zář 2013 20:13

Není zač, každý nějak začínal.

Můžeš použít javascript - např. funkci alert, která je dostupná v základním javascriptu (žádný framework - jquery, ...). Avšak pokud bude mít uživatel javascript vypnutý (pár procent uživatelů to tak dělá) tak se mu hláška nezobrazí a neví tedy jestli se něco stalo nebo ne.
Takže můžeš použít nějaký takovýto kód:

Kód: Vybrat vše

<?php
$predmet = trim($_POST['predmet']);   // k čemu?
$email = trim($_POST['email']);
$name = trim($_POST['name']);
$spam = $_POST['spam'];
$zprava = trim($_POST['zprava']);

if (!empty($email) and  !empty($name) and !empty($zprava) and $spam=="1975") // Pokud není políčko předmět, mail, zprava prázdné a spam se rovná (==) 1975, pokračuj v kódu
{
  $headers = "MIME-Version: 1.0\n";
  $headers .= "Content-Type: text/plain; charset=UTF-8\n";
  $headers .= "Content-Transfer-Encoding: 8bit\n";
  $headers .= "From: " . $email . "\n";

  mail("djarchee@gmail.com", '=?UTF-8?B?' . base64_encode('POPTÁVKA') . '?=', "ODESÍLATEL: $name, ZPRÁVA: " . $zprava, $headers);
  echo "<div id=\"notifikace\" class=\"uspech\">E-mail byl úspěšně odeslán. Děkujeme za Váš zájem.</div>";
}
else
{
  echo "<div id=\"notifikace\" class=\"neuspech\">Váš e-mail se nepodařilo odeslat.<br/> Opište prosím číslo z obrázku a vyplňte chybějící údaje.</div>";
}
?>
<script type="text/javascript">
document.getElementById("notifikace").style.display = "none";
alert(document.getElementById("notifikace").innerHTML.replace("<br/>", "\n"));
</script>
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW

djarchee@gmail.com
nováček
Příspěvky: 4
Registrován: září 13
Pohlaví: Muž
Stav:
Offline

Re: php mail - nejdou české znaky

Příspěvekod djarchee@gmail.com » 30 zář 2013 10:09

Díky moc! Ta hláška vypadá přeně tak, jak jsem si představoval.. akorát se otevře s tou tabulkou prázdná (bílá) stránka a uživatel musí stejně kliknout v prohlížeči na "zpět"..
Jakým způsobem se toho zbavím?

Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: php mail - nejdou české znaky

Příspěvekod CZechBoY » 30 zář 2013 10:10

Lze použít javascript - ajax.
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW

djarchee@gmail.com
nováček
Příspěvky: 4
Registrován: září 13
Pohlaví: Muž
Stav:
Offline

Re: php mail - nejdou české znaky

Příspěvekod djarchee@gmail.com » 30 zář 2013 10:18

Tak jsem to vyřešil přidáním:

Kód: Vybrat vše

history.go(-1);


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • eqkes = nejdou otevřít soubory (jpg, doc, xls...) Příloha(y)
    od pajauh » 11 srp 2024 10:58 » v Vše ostatní (bezp)
    8
    9225
    od pajauh Zobrazit poslední příspěvek
    24 zář 2024 18:07

Zpět na “Programování a tvorba webu”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 5 hostů