Autor Zpráva
bazz
Profil
Dobrý den, vím že to tady bylo už tisíckrát ale už jsem zkoušel x řešení a nic mi nefunguje, už jsem v tom zamotaný... mám toto a znaky š a ž se prostě nevypíší v mailu:

<form method="post" action="zpracovat10.php">
Váš email:<input name="email" size="25" value="@"><br>
Vaše jméno:<input name="jmeno" size="25" value=""><br>
<input type="submit" value="rezervuj">
</form>

<?php 

$jmeno = $_POST['jmeno'];
$email = $_POST['email'];

if ($jmeno!="" and $email!="")
{

Mail("rezervacedna@seznam.cz", $jmeno, "E-mail: " . $email, $jmeno);
echo "<p><strong>Sedadlo rezervováno</strong>.</p>";



kódování všech stránek jsem zkoušel jak utf-8 tak windows-1250
T-fon
Profil
Já jsem dřív používal tento kód a čeština bez problémů:
    $from = '...'; 
    $to = '...';
    $subject = '...';

    $headers = 'From: ' . $from . "\r\n"; 
    $headers .= 'MIME-Version: 1.0' . "\r\n";
    $headers .= 'Content-type: text/plain; charset="utf-8"' . "\r\n";
    $headers .= 'Content-Transfer-Encoding: 8bit' . "\r\n";

    $body = "....";

    mail ($to, $subject, $body, $headers);
Ale spíš použij nějakou knihovnu.
Keeehi
Profil
bazz:
A Nejčastější potíže s PHP (FAQ) » Kódování e-mailu, aneb abychom neposílali otazníky. jsi zkoušel?
bazz
Profil
Keeehi:
pokud zkouším ty tvoje hlavičky tak mi to píše že nemám definovanou proměnnou headers takže tam asi ještě necho chybí ne?
Keeehi
Profil
bazz:
No, zřejmě jsi to nezkopíroval dobře. Ovšem bez toho abychom viděli co jsi vytvořil ti nejsme schopni více poradit.
T-fon
Profil
Nejspíš jsi zkombinoval obě řešení. Ta proměnná by měla být $head a ne $headers.
bazz
Profil
<html>
<head>
<meta charset="windows-1250">
</head>
<body>
<?php 

$jmeno = $_POST['jmeno'];
$email = $_POST['email'];
$sedadlo = $_POST['sedadlo'];
$predmet = "rezervace sedadla DNA";
 
    $head .= 'MIME-Version: 1.0' . "\r\n";
    $head .= 'Content-type: text/plain; charset="utf-8"' . "\r\n";
    $head .= 'Content-Transfer-Encoding: 8bit' . "\r\n";

if ($jmeno!="" and $email!="")
{


Mail("rezervacedna@seznam.cz", $email, "Jméno: " . $jmeno, "$sedadlo", $head);
Mail($email, $predmet, "Děkujeme za rezervaci", "$sedadlo", $head);



divné je že do toho mailu na seznamu.cz mi to příjde dobře s češtinou ale ten druhý mail když otevřu jinde třeba na mém firemním mailu ...@riomdia.cz tak tam diakritika není
T-fon
Profil
Použij spíš kód, na který tě odkazoval Keeehi, ten bude aktuálnější.
bazz
Profil
<?php 

function autoUTF($s)
{
    if (preg_match('#[\x80-\x{1FF}\x{2000}-\x{3FFF}]#u', $s)) // detect UTF-8
    {
        return $s;
    }
    elseif (preg_match('#[\x7F-\x9F\xBC]#', $s)) // detect WINDOWS-1250
    {
        return iconv('WINDOWS-1250', 'UTF-8', $s);
    }
    else // assume ISO-8859-2
    {
        return iconv('ISO-8859-2', 'UTF-8', $s);
    }
}
 
function cs_mail($email, $predmet, $sedadlo, $head = "")
{
    $predmet = "=?utf-8?B?".base64_encode(autoUTF($predmet))."?=";
    $head .= "MIME-Version: 1.0".PHP_EOL;
    $head .= "Content-Type: text/plain; charset=\"utf-8\"".PHP_EOL;
    $head .= "Content-Transfer-Encoding: base64".PHP_EOL;
    $sedadlo = wordwrap(base64_encode(autoUTF($sedadlo)), 78, PHP_EOL, true);
    return mail($email, $predmet, $sedadlo, $head);
}


$jmeno = "{$_POST['jmeno']}".PHP_EOL;
$email = $_POST['email'];
$sedadlo = "{$_POST['sedadlo']}".PHP_EOL;
$predmet = "rezervace sedadla DNA";


if ($jmeno!="" and $email!="")
{


(cs_mail("rezervacedna@seznam.cz", $email, "Jméno: " . $jmeno, "$sedadlo"));
(cs_mail($email, $predmet, "Děkujeme za rezervaci", "$sedadlo"));



zkouším ale plavu v tom... pořád to chodí blbě
T-fon
Profil
Tak to vyřeš nějakou knihovnou, třeba u Nette emailu máš jistotu správný češtiny a použití je jednoduchý.
Jo a jenom jak na to zběžně koukám, tak tu funkci cs_mail voláš s přeházenýma parametrama.
bazz
Profil
chtěl bych na to přijít i bez té knohovny... už jen proto že je mi divné proč to na ten seznam chodí v pořádku

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:

0