Autor Zpráva
Sylar
Profil *
Zdravím, potřeboval bych poradit s kodováním ve fci mail.

na webu mám něco podobného
$headers = "Content-Type: text/plain; charset=utf-8"."\r\n";
$headers .= "From: Moje Stránky <info@stranka.cz>";
$sending = "Vaše registrace proběhla v pořádku.";
mail ($_POST['email'], "Registrace do Moje stránky", $sending, $headers);


Text kterej je v $sending je zobrazován v pořádku, ale to co je napsáno u From: Moje Stránky <info@stranka.cz> se mi u příchozího mailu zobrazí jako From: Moje Str?nky <info@stranka.cz> ... lze to nějak odstranit nebo ve From můžou být písmena pouze bez diakritiky ?

Všem díky
ShiraNai7
Profil
Na odstraneni diakritiky by se dala pouzit tato funkce:
function odstranitDiakritiku($vstup){
return str_replace(
  array("é", "ě", "É", "Ě", "ř", "Ř", "ť", "Ť", "ž", "Ž", "ú", "Ú", "ů", "Ů", "ü", "Ü", "í", "Í", "ó", "Ó", "á", "Á", "š", "Š", "ď", "Ď", "ý", "Ý", "č", "Č", "ň", "Ň", "ä", "Ä", "ĺ", "Ĺ", "ľ", "Ľ", "ŕ", "Ŕ", "ö", "Ö"),
  array("e", "e", "E", "E", "r", "R", "t", "T", "z", "Z", "u", "U", "u", "U", "u", "U", "i", "I", "o", "O", "a", "A", "s", "S", "d", "D", "y", "Y", "c", "C", "n", "N", "a", "A", "l", "L", "l", "L", "r", "R", "o", "O"),
  $vstup
  );
}


Mozna by ale pomohlo pouzivani funkce mail stavene pro kodovani utf8 - mb_send_mail().
Alphard
Profil
mně dobře slouží funkce uvedená a trochu okomentovaná zde http://diskuse.jakpsatweb.cz/index.php?action=vthread&forum=9&topic=77 861#18

vycucni co ti pomůže, nebo to používej celé, jak chceš, snad to bude fungovat
Sylar
Profil *
ShiraNai7
podobnou fci používám také ale já se diakritiky nepotřebuji zbavit
Tělo emailu se mi posílá v pořádku, jen hlavička tj. From: a Subject se mi po použití ěščřžýáíé mrší ... kouknu na tu fci ... díky

Alphard
oki díky kouknu ... jak píšu ShiraNai7ovi .. tělo se mi zobrazuje v pořádku jen from a subject mi blbnou ... vytáhnu si teda z toho co potřebuji ... díky moc
Radim Hejhal
Profil
Bývalé chybné řešení, správné viz následující přízpěvek.
Radim Hejhal
Profil
Tak napodruhé - správná varianta s kódováním UTF-8. Tuto variantu jsem již předtím zkoušel ale asi mi nefungovala kvůli nějaké jiné chybě.
<?php
$komu = "tobe@example.com";
$odesílatel = "Příliš žluťoučký kůň";
$adresaOdesílatele = "registrace@example.com";
$předmět = "Registrace (ěščřžýáíéďťňľúůó)";
$textMailu = "Dobrý den,\n".
             "děkuji za váš zájem.\n".
             "Pro dokončení registrace použijte následující odkaz.\n".
             "http://www.example.fuj?notosisnaddelateprcu1 \n\n".
             "Přeji hezký zbytek dne. (ěščřžýáíéďťňľúůó!)"; 
$hlavičky = "Content-type: text/plain; charset=utf-8 \n"; 

echo mail($komu, "=?UTF-8?B?".base64_encode($předmět)."?=", $textMailu, "From: =?UTF-8?B?".base64_encode($odesílatel)."?=<".$adresaOdesílatele."> \r\n".$hlavičky) ? "ODESLANO" : "CHYBA";
?>


Jednodušší, sjednocené kódování UTF-8. Hlavní chybou, kterou jsem v diskuzích postřehl, bylo umístění adresy odesílatele do kódované části (např. From: =?UTF-8?B?".base64_encode("Šílený Pažout <pazout@example.com>")."?=). Správné je tedy umístění za ni, viz kód.

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

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

0