Debian fórum

Dotazy => Programování => Téma založeno: Roman Horník kdy 12. 04. 2010, 13:48:12

Název: PHP: mail() a kódování
Přispěvatel: Roman Horník kdy 12. 04. 2010, 13:48:12
Nazdar,
potřebuju pomoct vyřešit jeden nepříjemnej problém s kódováním mailů. Pro jednu klientku, která vlastní menší hotel, jsem připravil formulář na objednávání ubytování. Bohužel mám ale nemalý problémy s kódováním. Vzhledem k tomu, že jej budou používat i zahraniční návštěvníci, zvolil jsem jako nejlepší volbu pro kódování UTF-8, jenže jsem si bláhově myslel, že mail() používá jako výchozí kódování UTF-8 a dává jej do hlavičky zprávy, ono ale ne. Testoval jsem to na Gmailu, jenže na něm se zpráva zobrazuje snad vždycky korektně, i kdyby byla kódována Enigmou. Jenže jak jsem jí poslal zkušební zprávu, vrátila mi ji s paznakama místo diakritiky, použil jsem od oka ISO-8859-2 a všechno v pořádku, ale protože se kopie zprávy posílá i klientovi, může nastat průser.
Pár fíglů, jak do hlaviček nastrkat typ kódování jsem zkusil, ale asi jsem někde dělal chybu a buďto to tu hlavičku ignorovalo, nebo skript nešel vůbec.

Nezná někdo něco jednoduchýho, co by skutečně fungovalo? Klidně se to může kódovat do Base64 (nebudou-li s tím mít starší mailový klienti problémy).

Pro úplnost sem dávám prasokód odesílacího skriptu, nekamenujte mne za tu prasečinu, je to zatím alfaverze ;D

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; ISO-8859-2">
<meta http-equiv="Content-Style-Type" content="text/css">
<link rel="shortcut icon" type="image/x-icon" href="/image/favicon.ico">
<title>Objednávací formulář</title>
</head>
<body style="font-family: Arial; text-align: center;">
<h1>Odesílání formuláře</h1>
<?
$jmeno = $_POST['jmeno'];
$prijmeni = $_POST['prijmeni'];
$adresa = $_POST['adresa'];
$mesto = $_POST['mesto'];
$psc = $_POST['psc'];
$zeme = $_POST['zeme'];
$tel = $_POST['telefon'];
$mail = $_POST['mail'];
$term1a = $_POST['term1a'];
$term1b = $_POST['term1b'];
$term2a = $_POST['term2a'];
$term2b = $_POST['term2b'];
$dospeli = $_POST['dospeli'];
$deti6 = $_POST['deti6'];
$deti12 = $_POST['deti12'];
$stravovani = $_POST['stravovani'];
$ubytovani = $_POST['ubytovani'];
$zprava = $_POST['zprava'];
$antispam = $_POST['antispam'];
$predmet1 = "OBJEDNÁVKA";
$predmet2 = "xxxxx- objednávka";

if ($jmeno!="" and $prijmeni!="" and $adresa!="" and $mesto!="" and $psc!="" and $zeme!="" and $tel!="" and $mail!="" and $term1a!="" and $term1b!="" and $term2a!="" and $term2b!="" and $dospeli!="" and $dospeli!="0" and  $deti6!="" and $deti12!="" and $antispam=="xxxxx")
{
mail ("<xxxxx@xxxxx.xx>", $predmet1 , "xxxxx ~ OBJEDNÁVKA\n\n" . "Jméno, příjmení: " . $jmeno . " " . $prijmeni . "\nAdresa: " . $adresa . "\nMěsto: " . $mesto . "\nPSČ: " . $psc . "\nZemě: " . $zeme . "\n\nTel: " . $tel . "\nE-mail: " . $mail . "\n\n" . "Termín: " . $term1a . " - " . $term1b . "\nNáhradní termín: " . $term2a . " - " . $term2b . "\nPočet dospělých: " . $dospeli . "\nPočet dětí do 6 let: " . $deti6 . "\nPočet dětí do 12 let: " . $deti12 . "\nStravování: " . $stravovani . "\nUbytování: " . $ubytovani . "\n\n" . "\nZpráva odesílatele:\n" . $zprava . "\n\n" . "\n\nTento e-mail byl odeslán z webového formuláře hotelu xxxxx", "From: " . $jmeno . " " . $prijmeni . "<" . $mail . ">", $hlavicka);
mail ("<" . $mail . ">", $predmet2 , "xxxxx ~ OBJEDNÁVKA\n\n" . "Jméno, příjmení: " . $jmeno . " " . $prijmeni . "\nAdresa: " . $adresa . "\nMěsto: " . $mesto . "\nPSČ: " . $psc . "\nZemě: " . $zeme . "\n\nTel: " . $tel . "\nE-mail: " . $mail . "\n\n" . "Termín: " . $term1a . " - " . $term1b . "\nNáhradní termín: " . $term2a . " - " . $term2b . "\nPočet dospělých: " . $dospeli . "\nPočet dětí do 6 let: " . $deti6 . "\nPočet dětí do 12 let: " . $deti12 . "\nStravování: " . $stravovani . "\nUbytování: " . $ubytovani . "\n\n" . "\nZpráva odesílatele:\n" . $zprava . "\n\n" . "\n\nTento e-mail byl odeslán z webového formuláře hotelu xxxxx", "From: " . $jmeno . " " . $prijmeni . "<" . $mail . ">", $hlavicka);
echo "<p><b>Vaše objednávka byla úspěšně odeslána</b><br><br>Kopie objednávky Vám byla odeslána e-mailem</p>";
}
else
{
echo "<p>Vaši objednávku se <b>nepodařilo odeslat</b>, pravděpodobně jste nevyplnili všechny položky.</p>";
}
?>
</body>
</html>
Název: Re: PHP: mail() a kódování
Přispěvatel: hoffmann kdy 06. 05. 2010, 21:23:48
Tady to mas vyreseno.  :)
http://forum.linuxsite.eu/topic17-odeslani-emailu-v-php.html (http://forum.linuxsite.eu/topic17-odeslani-emailu-v-php.html)
Název: Re: PHP: mail() a kódování
Přispěvatel: Roman Horník kdy 06. 05. 2010, 21:56:44
Ó, díky moc!
Název: Re: PHP: mail() a kódování
Přispěvatel: hoffmann kdy 06. 05. 2010, 22:23:25
Za malo.  ;)
Název: Re:PHP: mail() a kódování
Přispěvatel: drahos kdy 23. 01. 2011, 10:47:01
Včera jsem přesně tohle hledal jak blbec na googlu (nakonec jsem našel) a dneska se dozvim, že ste to tu už vyřešili.

P.S. Dík za odkaz.