NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
S účinností od 26. 3. jsme aktualizovali Zásady zpracování osobních údajů – doplnili jsme informace o monitorování telefonických hovorů se zájemci o studium. Ostatní části zůstávají beze změn.

Diskuze: PHP Email v Bootstrap šabloně

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Jak se ti líbí článek?
Před uložením hodnocení, popiš prosím autorovi, co je špatněZnaků 0 z 50-500
Jak se ti kurz líbí?
Tvé hodnocení kurzuZnaků 0 z 50-500
Aktivity
Avatar
pchd
Člen
Avatar
pchd:9.5.2018 20:18

Dámy a pánové,
můžete mi, někdo, prosím Vás poradit jak tohle naučím česky? Formulář funguje, emaily chodí, ale diakritika nefunguje. Jedná se o php soubor z Bootstrap šablony, jednoduchý web... Zkoušel jsem přidávat hlavičky s kódování, ale buď jsem je dával blbě nebo nevím...
Díky moc za každou radu.

<?php
// Email Submit
// Note: filter_var() requires PHP >= 5.2.0
MIME-Version: 1.0\nContent-Type: text/plain; charset=utf-8\nContent-Transfer-Encoding: 8bit
if ( isset($_POST['fir­st_name']) && isset($_POST['las­t_name']) && isset($_POST['e­mail']) && isset($_POST['pro­ject_name']) && isset($_POST['des­cription']) && filter_var($_POS­T['email'], FILTER_VALIDA­TE_EMAIL) ) {
// detect & prevent header injections
$test = "/(content-type|bcc:|cc:|­to:)/i";
foreach ( $_POST as $key => $val ) {
if ( preg_match( $test, $val ) ) {
exit;
}
}

$first_name = $_POST['first_na­me'];
$last_name = $_POST['last_na­me'];
$email = $_POST['email'];
$project_name = $_POST['projec­t_name'];
$description = $_POST['descrip­tion'];

$message = "
Jméno: $first_name \n
Příjmení: $last_name\n
Předmět: $project_name\n
Zpráva: $description
";

mail( "xyz@centrum.cz", $_POST['date'], $message, "From:" . $_POST['email'] );
// ^
// Replace with your email
}
?>

 
Odpovědět
9.5.2018 20:18
Avatar
Petr Čech
Tvůrce
Avatar
Odpovídá na pchd
Petr Čech:9.5.2018 21:34

Takto se budeš muset pachtit s věcmi jako content-transfer-encoding, doporučuji použít nějakou knihovnu. Já mám dobrou zkušenost s PhpMailerem.

Nahoru Odpovědět
+1
9.5.2018 21:34
the cake is a lie
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:10.5.2018 7:34

php.net/mail

function mailSend($mail)
        {
        $head = array();
        $head[] = "From: ".$mail['from'];
        $head[] = "X-Mailer: PHP";              // mailovy klient
        $head[] = "Return-Path: ".$mail['from'];        // navratová cesta pro chyby
        $head[] = "Reply-To: ".$mail['from'];
        $head[] = "MIME-Version: 1.0";                  // mime type
        $head[] = "Content-Type: text/html; charset=UTF-8"; // HTML format 1
        $head[] = "Content-Transfer-Encoding: 8bit";
        $head = implode("\r\n",$head);
        $mail['subject'] = "=?UTF-8?B?" . base64_encode($mail['subject']) . "?=";
        $d = date("Y-m-d H:i:s",time());
/*
        $browser = @get_browser(null, true);
        $mail['message'] .= "\n\n";
        if ($browser)
                {
                $mail['message'] .= implode(", ", array(
                        'Date'.": ".$d,
                        'platform'.": ".$browser['platform'],
                        'browser'.": ".$browser['browser'],
                        'version'.": ".$browser['version'],
                        isset($browser['parent']) ? 'parent'.": ".$browser['parent'] : ''
                        ));
                }
*/
        $mail['message'] .= "\n".'ip'.": ".getIp();
        $mail['message'] = nl2br($mail['message']); // HTML format 2
//echo '<pre>'; var_dump($mail); echo '</pre>';
        ini_set("SMTP", "smtp.muj_server.cz");  // mailovy server (slu funguje jen na slu strankach)
        $bool = false;
        $bool = mail($mail['to'], $mail['subject'], $mail['message'], $head);
        if ($bool)
                {fce_notice('Mail odeslan. '.$d, '');}
        else    {fce_notice('Mail error! '.$d, true);}
        return $bool;
        }
 
Nahoru Odpovědět
10.5.2018 7:34
Avatar
Lasvit
Člen
Avatar
Odpovídá na pchd
Lasvit:10.5.2018 10:11

Stačí jednoduše použít http://php.net/…end-mail.php (nechápu proč každý používá mail()) ... a v header mít minimálně

$headers .= "\nMIME-Version: 1.0\n";
$headers .= "Content-Type: text/html; charset=\"utf-8\"\n";
Editováno 10.5.2018 10:12
 
Nahoru Odpovědět
10.5.2018 10:11
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:10.5.2018 15:33

To nestaci. Spousta mailovacich programu kodovani nerozumi spravne. Pri trose stesti ti body zkoduje do utf-8, ale subject treba zobrazi jako latin-1.
Navic, spousta programu ignoruje mail, pokud nema vyplnene dalsi hlavicky.

Editováno 10.5.2018 15:34
 
Nahoru Odpovědět
10.5.2018 15:33
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 5 zpráv z 5.