Autor Zpráva
Jirka 20
Profil *
Zdravím všechny,
mám následující formulář pro odesílání e-mailu ze stránek. Pokud jeho výsledek prohlédnu v Outlooku, všechno je v pořádku, ale pokud se jej snažím zobrazit třeba ve webovém rozhraní Seznamu, nezobrazí se diakritika. Ve stránce je použito kódování windows-1250. Děkuji za radu.
<?
$predmet .= "Formulář";
$email = $_POST['email'];
$telo = $_POST['telo'];

$telo .= "jmeno: " .$_POST['jmeno']. "\n";
$telo .= "email: " .$_POST['email']. "\n";
$telo .= "telefon: " .$_POST['telefon']. "\n";
$telo .= "poznamky: " .$_POST['poznamky']. "\n";

if ($email!="")
{
Mail("xx@xx.cz", $predmet, $telo, "From: " . $email);
echo "<p>E-mail v pořádku odeslán.</p>";
}
else
{
echo "<p>Omlouváme se. Při odesílání formuláře <strong>došlo k chybě</strong>. </p>";
}
?>
Jan Tvrdík
Profil
Jirka 20:
PHP FAQ: Problémy s maily
Jirka 20
Profil *
Tak jsem to zkusil rozchodit pomocí scriptu na té stránce, ale bohužel mi to furt nejde. Já PHP moc neovládám, tak je možný, že jsem jen ten příklad nepochopil. Nejlepší by bylo vložit komentáře do kódu výše - co a kam mám vložit, abych to pochopil...
Alphard
Profil
<?php 
/* *************** diskuse.jakpsatweb.cz *** PHP FAQ ********************** */
function autoUTF($s)
{
    // detect UTF-8
    if (preg_match('#[\x80-\x{1FF}\x{2000}-\x{3FFF}]#u', $s))
        return $s;
    // detect WINDOWS-1250
    if (preg_match('#[\x7F-\x9F\xBC]#', $s))
        return iconv('WINDOWS-1250', 'UTF-8', $s);
    // assume ISO-8859-2
    return iconv('ISO-8859-2', 'UTF-8', $s);
}

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";
          $zprava = base64_encode (autoUTF ($zprava));
          return mail ($to, $predmet, $zprava, $head); }
/* ********************************************************************** **  */

$predmet .= "Formulář"; 
$email = $_POST['email']; 
$telo = $_POST['telo']; 

$telo .= "jmeno: " .$_POST['jmeno']. "\n"; 
$telo .= "email: " .$_POST['email']. "\n"; 
$telo .= "telefon: " .$_POST['telefon']. "\n"; 
$telo .= "poznamky: " .$_POST['poznamky']. "\n"; 

if ($email!="" && cs_mail("xx@xx.cz", $predmet, $telo, "From: $email\n")) 
{ 
echo "<p>E-mail v pořádku odeslán.</p>"; 
} 
else 
{ 
echo "<p>Omlouváme se. Při odesílání formuláře <strong>došlo k chybě</strong>. </p>"; 
} 
?>
Afrod
Profil
Já mám trošičku obsáhlejší formulář a nevim jak to udělat aby se všude zobrazovala diakritika, neumí to č ani ž
$jmeno=$_POST['jmeno'];
$prijmeni=$_POST['prijmeni'];
$ulice=$_POST['ulice'];
$popisne=$_POST['popisne'];
$psc=$_POST['psc'];
$mesto=$_POST['mesto'];
$telefon=$_POST['telefon'];
$email=$_POST['email'];
$vek=$_POST['vek'];
$vaha=$_POST['vaha'];
$vyska=$_POST['vyska'];
$redukce=$_POST['redukce'];
$kdy=$_POST['kdy'];
$spam=$_POST['spam'];
$to="Vyplněný formulář se všemi informacemi tak, jak to má být";
Jan Tvrdík
Profil
Afrod:
aby se všude zobrazovala diakritika
Kde je všude?
Afrod
Profil
No uved sem všechny proměný co mám a potřebuju aby se to zobrazovalo všech kromě spam
Jan Tvrdík
Profil
Afrod:
Kde aby se to zobrazovalo? Co s těmi proměnnými chceš dělat?
Alphard
Profil
Myslím, že cílem je poslat všechny proměnné mailem.

$telo = "Jméno: {$_POST['jmeno']}\r\n";
$telo .= "Příjmení: {$_POST['prijmeni']}\r\n";
$telo .= "Ulice: {$_POST['ulice']}\r\n";
// ...
Afrod
Profil
Ano za cíl je poslat všechny proměnné majlíkem. Jo a ještě se zeptám co přesně je to \r = Návrat vozíku, ale co to znamená
Alphard
Profil
Afrod:
co přesně je to \r
Odřádkování. Některým systémům stačí \n, některé využívají tohle.
Afrod
Profil
dobrá myšlenka, ale nějqak mi nevalí zobrazí se mi pouze Předmět Zpráva a nic ví kde sem mohl udelat chybu?
Alphard
Profil
Popište to trochu podrobněji. Co je v té zprávě?
Před odesláním si také vypište $telo a zkontrolujte, jestli obsahuje vše, co má.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: