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

PHP PHP Formulář a nastavení odesílání zpráv. American English version English version

Avatar
Dušan Matoušek:

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 = "mujemail@email.cz";
        $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. dubna 11:43
Avatar
Paranormal
Redaktor
Avatar
Odpovídá na Dušan Matoušek
Paranormal:

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. dubna 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:

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. dubna 12:14
Avatar
Odpovídá na Paranormal
Dušan Matoušek:

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. dubna 11:05
Avatar
Paranormal
Redaktor
Avatar
Odpovídá na Dušan Matoušek
Paranormal:

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. dubna 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:

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. dubna 13:56
Čím víc vím, tím víc věcí nevím.
Avatar
Dušan Matoušek:

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. dubna 14:15
Avatar
David Hynek
Redaktor
Avatar
David Hynek:

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. dubna 21:21
Čím víc vím, tím víc věcí nevím.
Avatar
Dušan Matoušek:

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. dubna 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.