Přidej si svou IT školu do profilu a najdi spolužáky zde na síti :)
Avatar
Dušan Matoušek:26.4.2016 11:43

Zdravíčko,
Vytvořit jsem jednoduchý odesílací formulář a pomocí PHP se mail odesílá, vše funguje, až na to že někde se zpráva zobrazí správně a někde jsou špatně zobrazené znaky.
Prosím o radu jak správně vložit do php funkci aby zpráva vždy přišla správně čitelná ?
Nemohu na to přijít, a v PHP mám jen okrajové znalosti. Díky moc.
Zde odesílací PHP soubor

<?php

  function encode_headers($string) {
  return  '=?UTF-8?B?' . base64_encode($string) . '?=';
}

    if ($_SERVER["REQUEST_METHOD"] == "POST") {

        $name = strip_tags(trim($_POST["name"]));
        $name = str_replace(array("\r","\n"),array(" "," "),$name);
        $email = filter_var(trim($_POST["email"]), FILTER_SANITIZE_EMAIL);
        $phone = trim($_POST["phone"]);
        $message = trim($_POST["message"]);


        if ( empty($name) OR empty($phone) OR empty($message) OR !filter_var($email, FILTER_VALIDATE_EMAIL)) {
            http_response_code(400);
            echo "Prosím zkontrolujte zadané údaje z formuláře.";
            exit;
        }

        $recipient = "[email protected]";
        $subject = "Nová zpráva";

        $email_content = "Jméno: $name\n";
        $email_content .= "Email: $email\n";
        $email_content .= "Telefon: $phone\n\n";
        $email_content .= "Zpráva:\n$message\n";

        $email_headers = "From: $email <$email>";


        if (mail($recipient, $subject, $email_content, $email_headers)) {

            http_response_code(200);
            echo "Zpráva byla úspěšně odeslána. Děkujeme.";
        } else {

            http_response_code(500);
            echo "Prosím zkontrolujte zadané údaje z formuláře.";
        }

    } else {

        http_response_code(403);
        echo "Zpráva nebyla doručena, prosím opakujte odeslání.";
    }

?>
 
Odpovědět 26.4.2016 11:43
Avatar
Paranormal
Redaktor
Avatar
Odpovídá na Dušan Matoušek
Paranormal:26.4.2016 11:58

v mailu musíš odeslat hlavičku, kde říkáš že kódování bude v UTF-8.

$headers = "Content-Type: text/html; charset=UTF-8";
Nahoru Odpovědět 26.4.2016 11:58
„Když toho moc neumíme tak jsme na nejlepší pozici se něčemu naučit.“
Avatar
Odpovídá na Paranormal
Dušan Matoušek:26.4.2016 12:14

děkuji, zkusím to vložit do souboru a otestuji, problém jsem měl když jsem měl v Thunderbirdu nastaveno default jazykovou sadu, až po nastavení UTF-8 se mi maily zobrazí správně, ale ne každý to právě má nastaveno v Thunderbirdu na UTF-8. Tak mi právě šlo o to aby se vždy zobrazil text mailu správně v češtině.
Vyzkouším, dám vědět.

 
Nahoru Odpovědět  +1 26.4.2016 12:14
Avatar
Odpovídá na Paranormal
Dušan Matoušek:27.4.2016 11:05

Vložil jsem tam hlavičku kterou jsi mi poradil, ale stále české znaky nejsou správně zobrazeny.
Možná ještě něco chybí a je to pouze částečné řešení co by mail vždy správně zobrazilo v poštovním klientovi.

 
Nahoru Odpovědět 27.4.2016 11:05
Avatar
Paranormal
Redaktor
Avatar
Odpovídá na Dušan Matoušek
Paranormal:27.4.2016 13:51

Jakého klienta na to používáš? Zobrazuješ to přímo na webu nbco na nějakém klientovi v PC?

Nahoru Odpovědět 27.4.2016 13:51
„Když toho moc neumíme tak jsme na nejlepší pozici se něčemu naučit.“
Avatar
David Hynek
Redaktor
Avatar
Odpovídá na Dušan Matoušek
David Hynek:27.4.2016 13:56

Některé internetové mailové systémy jsou příšerné a rozpadne se tam skoro cokoliv, když to nepříjde v kodování Windows-1250. Jestli to máš na podobné aplikaci, zkus nastavit znakovou sadu v prohlížeči a uvidíš. Většinou bude obsah zprávy v pořádku a vše ostatní rozsypané...

Zkus jako znakovou sadu použít tuto: iso-8859-2 (vím že je to návrat zpět)

Nahoru Odpovědět 27.4.2016 13:56
Čím víc vím, tím víc věcí nevím.
Avatar
Dušan Matoušek:27.4.2016 14:15

Tak v PC mám Thunderbird a tam je default nastaveno po instalaci Středoevropské jazyky (Windows-1250), na Webmailu ve schránce taky. Až po nastavení jazykové sady UTF-8 je mail čitelný, ale trápí mě proč všechny ostatní maily příjdou správně v češtině ikdyž není nastaveno nastavena zanková sada UTF-8 jen z toho skriptu co mám zde je to nečitelné :-(

 
Nahoru Odpovědět 27.4.2016 14:15
Avatar
David Hynek
Redaktor
Avatar
David Hynek:27.4.2016 21:21

Zkus ještě hned na začátek PHP skriptu přidat tohle:

header('Content-type: text/html; charset=utf-8');
Nahoru Odpovědět 27.4.2016 21:21
Čím víc vím, tím víc věcí nevím.
Avatar
Dušan Matoušek:27.4.2016 22:24

děkuji, ale ani tohle není řešení, asi to nebude tak jednoduché, hledám ještě na webu nějaké řešení ale nic nevede k úspěchu...

 
Nahoru Odpovědět 27.4.2016 22:24
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 9 zpráv z 9.