Autor Zpráva
hellmc
Profil
Ahoyte ...
Neviem si poradiť s kódovaním e-mailu ....

Rád by som odoslal e-mail s html obsahom ... posielam funkciou >>
function poslat_mail_html($email_od_koho,$email_komu,$subjekt,$sprava)
{
$to = $email_komu;
$subject = $subjekt;
$from = $email_od_koho;
 
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers.= "From: =?utf-8?b?".base64_encode($email_od_koho)."?=\r\n";
$headers .= "Content-Type: text/html; charset=UTF-8". "\r\n";
$headers .= 'From: '.$from."\r\n".
    'Reply-To: '.$from."\r\n" .
    'X-Mailer: PHP/' . phpversion();
$message=$sprava;

if(mail($to, $subject, $message, $headers))
    {
    uspech("E-mail pre ".$email_komu." bol úspešne odoslaný!");
    } 
    else
    {
    chyba("E-mail nebolo možné odoslať!");
    }
    
}

Obsah e-mailu html a vložené z mysqli_fetch_assoc >
while($f=mysqli_fetch_assoc($q))
        {
        $meno=$f['meno']." ".$f['priezvisko'];
        }
        
$ret="<html><head><meta http-equiv='Content-Type'  content='text/html charset=UTF-8'/></head>";    
$ret.="<table style='background:red; color:white; width:100%;'>";
$ret.="<tr><td colspan='2' style='font-size:25px; text-align:center'>UPOMIENKA<br>".$proto."</td></tr>";
$ret.="<tr><td align='center' style='background:white; color:black; border:2px solid black;'>Meno:<strong>".$meno."</strong>
</td>";
$ret.="</table>";
$ret.="</html>";
return $ret;

Text napísaný ako html kóduje v poriadku, problém je s vloženým textom z db (premenná $meno) nezobrazuje správne. Najbližšie k správnemu zobrazeniu bolo :
$meno=mb_convert_encoding($meno,"ISO-8859-2","UTF-8");
keď skúsim mb_detect_encoding($meno) zobrazí mi UTF-8 ale napríklad znak "Ľ" nezobrazí správne.
Všetko to beží na XAMPP, PHP 7.4.4, MYSQLI : 7.4.4 pod WIN7

Googlil som všetko možné, ale nedarí sa mi dáta z db zobrazovať správne.... Ďakujem za hocijakú pomoc
Kajman
Profil
Pokud je čeština v databázi v pořádku (např. při prohlížení nástrojem Adminer), mělo by stači po připojení v php říci, že chcete pracovat v utf-8
$instance_mysqli->set_charset("utf8");
hellmc
Profil
Kajman:
Dik .... ale
mysqli_set_charset($link,"utf8");
mb_internal_encoding("UTF-8");
mam ... pole v db je utf8_slovak_ci
Set locale mam :
setlocale(LC_ALL, "sk_SK.utf8", "Slovak_Slovakia.65001", "Slovak");
Kajman
Profil
A když se podíváte Adminerem na data v databázi, je diakritika správně?
hellmc
Profil
Kajman:
Používam phpMyAdmin 5.0.2 ... tam je to vporiadku
Kajman
Profil
Pokud si tedy vypíšete ve skriptu dosazené jména do html a vše je v pořádku, tak bude problém opravdu až v posílání.

V místní ukázce, je encodován i obsah zprávy.

Ale asi bych spíše použil nějakou odladěnou knihovnu, viz Nejčastější potíže s PHP (FAQ) » Odeslání více položek
hellmc
Profil
Kajman:
Problém bol nakoniec v editore, začal som používať PhpDesigner .. a mal vychodzie kodovanie ANSII .... Vďaka za všetko

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0