IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Formulář a nastavení odesílání zpráv.

Aktivity
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
Verquido
Tvůrce
Avatar
Odpovídá na Dušan Matoušek
Verquido: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
Avatar
Odpovídá na Verquido
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
26.4.2016 12:14
Avatar
Odpovídá na Verquido
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
Verquido
Tvůrce
Avatar
Odpovídá na Dušan Matoušek
Verquido: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
Avatar
David Hynek
Tvůrce
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
Tvůrce
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.